remove objects from array by object property

前端 未结 13 2944
抹茶落季
抹茶落季 2020-11-22 17:40
var listToDelete = [\'abc\', \'efg\'];

var arrayOfObjects = [{id:\'abc\',name:\'oh\'}, // delete me
                      {id:\'efg\',name:\'em\'}, // delete me
            


        
13条回答
  •  旧巷少年郎
    2020-11-22 17:57

    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;
    });
    

提交回复
热议问题