最干净的方式来合并对象

我有几个结构相同的对象; 其中一些对某些字段具有空值,而其中一个对象(这里是obj2)具有在其他对象中具有空值的字段的值; 我想把它们合并起来,成为一个有价值的东西:

var obj2 = { options: [ null ], name: "name1", } var obj1 = { options: [ {"option": "option1"} ], name: "name1", } desiredOutput = { options: [ {"option": "option1"} ], name: "name1", } 

我的尝试:我试过lodash; 但与lodash的议题是秩序有影响; 也就是说,无论哪个对象最后都会覆盖前面提到的字段:

我试过lodash; 这里myArray是一个obj1,obj2,…

  var newResults = {}; for (var i = 0; i < myArray.length; i++) { newResults = lodash.extend(newResults, myArray[i]); } 

这个最干净的解决scheme是什么? 谢谢

根据你在问题和评论中已经解释的内容,我们试图完成的是在myArrayoptions不包含null 。 在这种情况下,我们不需要执行合并,只需在数组中search所需的对象即可。

 var newResults = _.find(myArray, function (obj) { return !_.contains(obj.options, null); }); 

newResults将是数组中第一个不包含null