我在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--;
}
}
答案 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]
获得价值。