比较包含数组的对象
Compare objects containing arrays
我有两个包含一些数组的 JS 对象。我想比较这两个对象并创建第三个对象,其中包含仅 secondObj
独有的数组。
它们看起来像这样:
firstObj : {
Jim_Array : [...],
Joe_Array : [...],
Bill_Array : [...]
}
secondObj : {
Bill_Array : [...],
Sam_Array : [...],
Kate_Array : [...],
Jim_Array : [...],
Joe_Array : [...]
}
我想比较这两个对象,结果如下:
thirdObj : {
Sam_Array : [...],
Kate_Array : [...]
}
您可以尝试如下操作
var thirdObj = {};
for (var key in secondObj) {
if(!firstObj.hasOwnProperty(key)) {
// In case you need to compare the array additional check will come here
thirdObj[key] = secondObj[key];
}
}
另一种方式
var thirdObj = {};
for (var key in secondObj) {
if(firstObj[key] === undefined) {
// In case you need to compare the array additional check will come here
thirdObj[key] = secondObj[key];
}
}
您可以将 Object.keys()
与 reduce()
一起使用,并检查 firstObj 是否具有 属性 of secondObj 与 hasOwnProperty()
,如果没有则添加到新对象。
var firstObj = {Jim_Array : ['...'], Joe_Array : ['...'], Bill_Array : ['...']}
var secondObj = {Bill_Array : ['...'], Sam_Array : ['...'], Kate_Array : ['...'], Jim_Array : ['...'], Joe_Array : ['...']}
var result = Object.keys(secondObj).reduce(function(o, e) {
if(!firstObj.hasOwnProperty(e)) o[e] = secondObj[e];
return o;
}, {});
console.log(result)
使用下划线的解决方案:
var result = _.pick(secondObj, _.difference( _.keys(secondObj), _.keys(firstObj)));
我有两个包含一些数组的 JS 对象。我想比较这两个对象并创建第三个对象,其中包含仅 secondObj
独有的数组。
它们看起来像这样:
firstObj : {
Jim_Array : [...],
Joe_Array : [...],
Bill_Array : [...]
}
secondObj : {
Bill_Array : [...],
Sam_Array : [...],
Kate_Array : [...],
Jim_Array : [...],
Joe_Array : [...]
}
我想比较这两个对象,结果如下:
thirdObj : {
Sam_Array : [...],
Kate_Array : [...]
}
您可以尝试如下操作
var thirdObj = {};
for (var key in secondObj) {
if(!firstObj.hasOwnProperty(key)) {
// In case you need to compare the array additional check will come here
thirdObj[key] = secondObj[key];
}
}
另一种方式
var thirdObj = {};
for (var key in secondObj) {
if(firstObj[key] === undefined) {
// In case you need to compare the array additional check will come here
thirdObj[key] = secondObj[key];
}
}
您可以将 Object.keys()
与 reduce()
一起使用,并检查 firstObj 是否具有 属性 of secondObj 与 hasOwnProperty()
,如果没有则添加到新对象。
var firstObj = {Jim_Array : ['...'], Joe_Array : ['...'], Bill_Array : ['...']}
var secondObj = {Bill_Array : ['...'], Sam_Array : ['...'], Kate_Array : ['...'], Jim_Array : ['...'], Joe_Array : ['...']}
var result = Object.keys(secondObj).reduce(function(o, e) {
if(!firstObj.hasOwnProperty(e)) o[e] = secondObj[e];
return o;
}, {});
console.log(result)
使用下划线的解决方案:
var result = _.pick(secondObj, _.difference( _.keys(secondObj), _.keys(firstObj)));