【发布时间】:2014-05-06 03:29:53
【问题描述】:
我有一个这样的对象
myArray = [
{ name: "1",
age: "20"
},
{ name: "6",
age: "20"
},
{ name: "2",
age: "20"
},
];
anotherArray = [2,1,3,4,5,6];
基本上我试图找到匹配 a 是否存在,如果存在则从myArray中删除它
for(var i = 0, len = myArray.length; i < len; i++) {
var searchTerm = myArray[i].name;
for (var j = 0; j < anotherArray.length; j++) {
if (myArray[i].name === anotherArray[j]) {
// Not exactly sure how the deletion will work with array.splice
len--;
break;
}
}
}
由于某种原因,它似乎没有按预期工作。
最终的结果应该是这样的
myArray = [
{ name: "6",
age: "20"
}
];
【问题讨论】:
-
请注意,如果拼接出当前成员,则需要减少计数器并缩短迭代限制,因为长度也会更短。反向迭代更简单,所以这些都不是问题。
-
或者使用
filter和indexOf的组合,比如arr1.filter(function(x){return ~arr2.indexOf(x.name)} -
@elclanrs 哦~可读性! =)(不过我喜欢这个解决方案)
-
@elclanrs — indexOf 使用
===所以"1" !== 1。 :-)
标签: javascript arrays javascript-objects