我有一个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]
?
- 用
splice
代替delete
- 循环数组从长度-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);