Javascript 使用2个对象数组,使用类似于IndexOf(或其他选项)的内容对其进行迭代
我有一个对象数组,我试图迭代。数组的格式非常简单Javascript 使用2个对象数组,使用类似于IndexOf(或其他选项)的内容对其进行迭代,javascript,Javascript,我有一个对象数组,我试图迭代。数组的格式非常简单 {a:5, b:"key", c:19} 我试图将数组与子集进行比较,比如:[{a:5},…] for (var i = 0; i < subset.length; i++) { var searchTerm = subset[i].a; var index = objs.indexOf(searchTerm, function (el) { return el.a; }); if (i
{a:5, b:"key", c:19}
我试图将数组与子集进行比较,比如:[{a:5},…]
for (var i = 0; i < subset.length; i++) {
var searchTerm = subset[i].a;
var index = objs.indexOf(searchTerm, function (el) {
return el.a;
});
if (index > -1) {
objs[index].Found = true;
}
}
而不是我试图与之合作的想法
编辑
这里有一些代码,我必须让它工作,但我认为有一个更有效的方法来做它比书面
for (var j = 0; j < compare.length; j++){
var searchTerm = compare[j]["a"];
for (var k = 0; k < objs.length; k++){
if (!objs[k].Found && objs[k]["a"] == searchTerm){
objs[k].Found = true;
break;
}
}
}
如果有多个对象匹配怎么办?从什么时候开始indexOf将函数作为第二个参数?@Adam它没有。如果我理解正确的话,问题是如何做这样的事情。有很多方法可以在接受回调的数组上使用:map、some、every等。我认为它不会比编辑中的示例更有效。在JS中有很多方法可以重构它,但我认为你永远也无法击败array1.length*array2.length迭代。
for (var j = 0; j < compare.length; j++){
var searchTerm = compare[j]["a"];
for (var k = 0; k < objs.length; k++){
if (!objs[k].Found && objs[k]["a"] == searchTerm){
objs[k].Found = true;
break;
}
}
}