【发布时间】:2015-03-17 14:30:15
【问题描述】:
我有两个对象数组。我想按名称检查数组 2 中存在的数组 1 中的对象列表。
arr1 = [{name: "krishna", age: 27}, {name: "chandan", age 30}]
arr2 = [{name: "krishna", age: 27}, {name: "chandan", age 30}, {name: "someone", age: 30}]
arr1 intersec arr2 = [{name: "krishna", age: 27}, {name: "chandan", age 30}]
首先我尝试遍历数组并按名称找到类似的对象,如下所示
var intersec = [];
for(var i = 0; i < arr1.length; i++) {
for(var j = 0; j < arr2.length; j++) {
if(arr1[i].name === arr2[j].name) {
intersec.push(arr1[i]);
}
}
}
后来我认为如果数据量增加,这段代码会变得复杂。
所以我想出了另一个逻辑,我将 arr1 字符串化并迭代 arr2 并获取名称并在字符串化后的 arr1 上使用 indexOf 函数来检查它是否存在。
var exp = "name: \""+arr2[i].name+"\"";
stringArr1.indexOf(exp);
我想知道哪一个是有效的,还有其他有效的方法吗?
【问题讨论】:
标签: javascript arrays