I have an array of objects:
var items = [{ id: 1, text: "test1" }, { id: 2, text: "test2" }, { id: 3, text: "test3"}];
I have the following object:
var itemToRemove = { id: 2, text: "test2" };
I want to check by id if itemToRemove exists in the items array.
And remove it:
// pseudo code
items.remove(itemToRemove);
I went through javascript array methods but found nothing that will do the job. Thanks!
asked Sep 23, 2013 at 11:46
Mdb
8,55622 gold badges66 silver badges100 bronze badges
-
Possible duplicate of How to remove item from array by value?pscl– pscl2017年12月14日 00:37:21 +00:00Commented Dec 14, 2017 at 0:37
-
Possible duplicate of How do I remove a particular element from an array in JavaScript?Aluan Haddad– Aluan Haddad2018年04月11日 05:44:59 +00:00Commented Apr 11, 2018 at 5:44
2 Answers 2
Use filter:
items.filter(function (item) {
return item.id !== 2 || item.text !== "text2";
});
It's generally not a good idea to mutate the original array or else I would recommend Sirko's answer. The filter method produces a whole new array. It doesn't mutate the original array.
answered Sep 23, 2013 at 11:50
Aadit M Shah
74.5k31 gold badges177 silver badges311 bronze badges
Sign up to request clarification or add additional context in comments.
2 Comments
Robusto
+1, but this won't work in crappy (i.e., IE < 9) browsers. You'd have to use some kind of a shim to add the filter method to the Array object.
Aadit M Shah
@Robusto
if (![].filter) Array.prototype.filter = function (callback, that) { var index = 0, length = this.length, list = []; while (index < length) { var item = this[index]; if (callback.call(that, item, index++, this)) list.push(item); } return list; };Traverse the array by using a plain loop and then remove the matching item by using splice():
for( var i=0; i<items.length; i++ ) {
if( items[i].id == itemToRemove.id ) {
items.splice( i, 1 ); // remove the item
break; // finish the loop, as we already found the item
}
}
answered Sep 23, 2013 at 11:48
Sirko
74.3k19 gold badges157 silver badges194 bronze badges
Comments
lang-js