比较包含数组的对象

时间:2016-06-21 14:17:57

标签: javascript arrays underscore.js

我有两个包含一些数组的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 : [...]
}

3 个答案:

答案 0 :(得分:2)

您可以尝试以下内容

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];

  }

}

答案 1 :(得分:2)

您可以将Object.keys()reduce()一起使用,并检查firstObj是否具有带有hasOwnProperty()的secondObj的属性,如果没有添加到新对象。



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)




答案 2 :(得分:1)

使用下划线的解决方案:

var result = _.pick(secondObj, _.difference( _.keys(secondObj), _.keys(firstObj)));