合并对象最干净的方法

时间:2014-12-31 01:22:18

标签: javascript node.js lodash

我有一些具有相同结构的物体;其中一些对于某些字段具有空值,而其中一个对象(此处为obj2)具有该字段的值,该字段在其他对象中具有空值;我想ro合并它们和cosider有价值的那个:

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

这个最干净的解决方案是什么? 感谢

1 个答案:

答案 0 :(得分:0)

根据您在问题和评论中解释的内容,我们要完成的是在myArray中选择options不包含null的对象。在这种情况下,我们不需要执行合并,我们只需在数组中搜索所需的对象。

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

newResults将是数组中第一个options不包含null的对象。