答案 0 :(得分:1)
这为您提供所需的输出
arr2.forEach(function(value2) {
var found = false;
arr1.forEach(function(value1) {
if (value2.id === value1.id) {
document.getElementById('list').innerHTML += (value2.student_name + " -- true, <br/>");
found = true;
}
});
if (!found) {
document.getElementById('list').innerHTML += (value2.student_name + " -- false, <br/>");
}
});
结果
A -- true,
L -- true,
B -- false,
C -- false,
D -- false,
E -- false,
F -- false,
答案 1 :(得分:0)
var arr1 = [{"id":2,"student_name":"LSa"},{"id":3,"student_name":"Liu Sa"},{"id":77,"student_name":"Liu Sa"}];
var arr2 = [{"id":2,"student_name":"A"},{"id":3,"student_name":"L"},{"id":4,"student_name":"B"},{"id":55,"student_name":"C"},{"id":25,"student_name":"D"},{"id":23,"student_name":"E"},{"id":89,"student_name":"F"}];
var combo = arr2.concat(arr1);
combo.filter(function (element, index) {
var possibleDupeIndex = combo.findIndex(function (_element) {return _element.id === element.id});
return possibleDupeIndex === -1 || possibleDupeIndex === index;
});
这将从两个数组的组合中删除所有重复项,第二个数组中的元素优先于第一个数组中的元素。
像underscore.js或lodash这样的工具非常有用。例如。在lodash中,同样可以通过以下方式实现:
_.uniqBy(arr2.concat(arr1), 'id')
答案 2 :(得分:0)
您循环遍历第一个数组中的每个元素,并根据它的id是否与第二个数组中的每个ID匹配而添加到列表中。
要获得所需的输出,您可以执行相同的循环,但只需在数组中的元素中添加属性即可找到它。
arr1.forEach(function(value1) {
arr2.forEach(function(value2) {
if (value1.id === value2.id ) {
value2.found = true;
}
});
});
然后输出到这样的列表。
arr2.forEach(function(val) {
document.getElementById('list').innerHTML +=
(val.student_name + " -- " + (val.found ? "true":"false") + "<br/>");
})