0

我在 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--;
    }
}
4

2 回答 2

0

使用 for 循环。arr 的长度动态变化

var length= arr.length;
for(var i=0; i<length ; i++){
    if (arr[i].field == "something") {
        arr.splice(i,1);
        length = arr.length;
    }
}
于 2013-04-09T19:08:23.473 回答
0

它应该是:

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

jsFiddle 示例

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

于 2013-04-09T19:09:46.703 回答