删除JavaScript数组元素显示未定义



我有一个JavaScript数组与对象和数组有一些id。我想要的是将数组中的对象与id数组进行比较如果在一个对象中找到了id,我想要从数组中删除该元素。这样做的结果显示未定义的地方被删除的元素。

var data = [{"name": "John_Smith","val":"3","id":"2"},{"name": "Peter_Adams","val":"2","id":"3"},{"name": "Priya_Shetye","val":"1","id":"4"},{"name": "Sara_Brown","val":"4","id":"5"}]
var arr = ["2","5"];
for (var i = 0; i < data.length; i++) {
    for(var j=0;j<arr.length;j++){
        if (arr[j]==data[i].id ) {
            delete data[i];
        }
    }
}

结果显示[undefined,object object,object object,undefined]。有没有办法只得到[object object,object object] ?

  1. splice代替delete
  2. 循环数组从长度-1到0,否则你会错过处理一些数据。
var data = [{"name": "John_Smith","val":"3","id":"2"},{"name": "Peter_Adams","val":"2","id":"3"},{"name": "Priya_Shetye","val":"1","id":"4"},{"name": "Sara_Brown","val":"4","id":"5"}];
var arr = ["2","5"];
for (var i = data.length-1; i >= 0; i--) {  
    for(var j = 0;j < arr.length;j++){  
        if (arr[j]==data[i].id ) {  
            data.splice(i,1);
        }
    }
}
console.log(data);

最新更新