我有2个数组列表
数组1
var array1=[{default:true ,name:"type"},{default:true ,name:"id"},{default:true ,name:"status"}]
数组2
var array2=[{default:true ,name:"id"},{default:true ,name:"status"}]
现在我想要第三个数组,例如
ARRAY3
var array3=[{default:false ,name:"type"}]
其中name不匹配,其默认值应为false
答案 0 :(得分:0)
仅从array1
找到缺失的值:
var array1=[{default:true ,name:"type"},{default:true ,name:"id"},{default:true ,name:"status"}];
var array2=[{default:true ,name:"id"},{default:true ,name:"status"}]
var array3 = array1.filter(function(val){
return array2.filter(function(val2){ return val.name == val2.name }).length == 0;
}).map(function(v) {
return {default:false, name:v.name};
});
console.log(array3);
要从array1
和 array2
中查找缺失的值:
var array1=[{default:true ,name:"type"},{default:true ,name:"id"},{default:true ,name:"status"}];
var array2=[{default:true ,name:"id"},{default:true ,name:"status"}]
var array3 = array1.filter(function(val){
return array2.filter(function(val2){ return val.name == val2.name }).length == 0;
}).concat(array2.filter(function(val){
return array1.filter(function(val2){ return val.name == val2.name }).length == 0;
})).map(function(v) {
return {default:false, name:v.name};
})
console.log(array3);
答案 1 :(得分:0)
您可以创建一个哈希表,并将其作为参考,哪些项应该在结果数组中。
var array1 = [{ default: true, name: "type" }, { default: true, name: "id" }, { default: true, name: "status" }],
array2 = [{ default: true, name: "id" }, { default: true, name: "status" }],
hash = Object.create(null),
result = [];
array2.forEach(function (a) {
hash[a.name] = true;
});
array1.forEach(function (a) {
hash[a.name] || result.push({ default: false, name: a.name });
});
console.log(result);