Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove Object from Array using JavaScript

How can I remove an object from an array? I wish to remove the object that includes name Kristian from someArray. For example:

someArray = [{name:"Kristian", lines:"2,5,10"},              {name:"John", lines:"1,19,26,96"}]; 

I want to achieve:

someArray = [{name:"John", lines:"1,19,26,96"}]; 
like image 484
Clem Avatar asked Apr 05 '12 08:04

Clem


People also ask

How do I remove a particular element from an array in JavaScript?

pop() function: This method is use to remove elements from the end of an array. shift() function: This method is use to remove elements from the start of an array. splice() function: This method is use to remove elements from the specific index of an array.

How do I remove an item from an array by value?

To remove an item from a given array by value, you need to get the index of that value by using the indexOf() function and then use the splice() function to remove the value from the array using its index.

Can you remove elements from an array?

Java arrays do not provide a direct remove method to remove an element. In fact, we have already discussed that arrays in Java are static so the size of the arrays cannot change once they are instantiated. Thus we cannot delete an element and reduce the array size.


1 Answers

You can use several methods to remove item(s) from an Array:

//1 someArray.shift(); // first element removed //2 someArray = someArray.slice(1); // first element removed //3 someArray.splice(0, 1); // first element removed //4 someArray.pop(); // last element removed //5 someArray = someArray.slice(0, someArray.length - 1); // last element removed //6 someArray.length = someArray.length - 1; // last element removed 

If you want to remove element at position x, use:

someArray.splice(x, 1); 

Or

someArray = someArray.slice(0, x).concat(someArray.slice(-x)); 

Reply to the comment of @chill182: you can remove one or more elements from an array using Array.filter, or Array.splice combined with Array.findIndex (see MDN), e.g.

// non destructive filter > noJohn = John removed, but someArray will not change let someArray = getArray(); let noJohn = someArray.filter( el => el.name !== "John" );  log(`let noJohn = someArray.filter( el => el.name !== "John")`,   `non destructive filter [noJohn] =`, format(noJohn)); log(`**someArray.length ${someArray.length}`);  // destructive filter/reassign John removed > someArray2 = let someArray2 = getArray(); someArray2 = someArray2.filter( el => el.name !== "John" ); log("",    `someArray2 = someArray2.filter( el => el.name !== "John" )`,   `destructive filter/reassign John removed [someArray2] =`,    format(someArray2)); log(`**someArray2.length after filter ${someArray2.length}`);  // destructive splice /w findIndex Brian remains > someArray3 = let someArray3 = getArray(); someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1); someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1); log("",   `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,   `destructive splice /w findIndex Brian remains [someArray3] =`,    format(someArray3)); log(`**someArray3.length after splice ${someArray3.length}`);  // if you're not sure about the contents of your array,  // you should check the results of findIndex first let someArray4 = getArray(); const indx = someArray4.findIndex(v => v.name === "Michael"); someArray4.splice(indx, indx >= 0 ? 1 : 0); log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,   `check findIndex result first [someArray4] = (nothing is removed)`,   format(someArray4)); log(`**someArray4.length (should still be 3) ${someArray4.length}`);  // -- helpers --  function format(obj) {   return JSON.stringify(obj, null, " "); }  function log(...txt) {   document.querySelector("pre").textContent += `${txt.join("\n")}\n` }  function getArray() {   return [ {name: "Kristian", lines: "2,5,10"},            {name: "John", lines: "1,19,26,96"},            {name: "Brian", lines: "3,9,62,36"} ]; }
<pre> **Results**  </pre>
like image 120
KooiInc Avatar answered Oct 21 '22 12:10

KooiInc