var listToDelete = [\'abc\', \'efg\'];
var arrayOfObjects = [{id:\'abc\',name:\'oh\'}, // delete me
{id:\'efg\',name:\'em\'}, // delete me
Loop in reverse by decrementing i to avoid the problem:
for (var i = arrayOfObjects.length - 1; i >= 0; i--) {
var obj = arrayOfObjects[i];
if (listToDelete.indexOf(obj.id) !== -1) {
arrayOfObjects.splice(i, 1);
}
}
Or use filter:
var newArray = arrayOfObjects.filter(function(obj) {
return listToDelete.indexOf(obj.id) === -1;
});