从jQuery数组中删除元素会产生未定义的错误

时间:2013-04-09 19:05:51

标签: jquery arrays splice

我在jQuery中有一个数组。我想删除所选字段中具有特定值的所有元素。当我进行循环和拼接时,我收到错误。

$.each(arr,function(idx,val) {
    if (arr[idx].field == "something") {
        arr.splice(idx,1);
    }
});

我明白为什么会收到错误:

Uncaught TypeError: Cannot read property 'field' of undefined

...但我在找出最好的方法时遇到了麻烦。一些研究表明,grep可能是正确的方法。有什么建议吗?

*答案*

最后,这就是我所做的。有人有更好的答案吗?:

for (var idx=0; idx<arr.length; idx++)
{
    if (arr[idx].field == "something") {
        arr.splice(idx,1);
        idx--;
    }
}

2 个答案:

答案 0 :(得分:0)

用于循环。 arr的长度正在动态变化

var length= arr.length;
for(var i=0; i<length ; i++){
    if (arr[i].field == "something") {
        arr.splice(i,1);
        length = arr.length;
    }
}

答案 1 :(得分:0)

应该是:

$.each(arr,function(idx,val) {
    if (arr[idx] == "something") {
        arr.splice(idx,1);
    }
});

<强> jsFiddle example

在您的示例field中没有任何意义。 arr[idx]获得价值。