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

时间:2015-09-30 05:37:09

标签: javascript arrays

我有一个包含对象的JavaScript数组和一个包含一些ID的数组。我想要的是比较数组中的对象与id数组,如果在对象中找到任何id,我想从数组中删除该元素。执行此操作后,结果将显示undefined以代替已删除的元素。

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 个答案:

答案 0 :(得分:0)

  1. 使用splice代替delete
  2. 从长度为1到0的循环数组,否则你将错过处理一些数据。
  3. 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);