1

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
2

2 Answers 2

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
Sign up to request clarification or add additional context in comments.

2 Comments

+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.
@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; };
1

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

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.