Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 合并对象的最干净方法_Javascript_Node.js_Lodash - Fatal编程技术网

Javascript 合并对象的最干净方法

Javascript 合并对象的最干净方法,javascript,node.js,lodash,Javascript,Node.js,Lodash,我有几个结构相同的物体;其中一些对象的某些字段值为空,而其中一个对象(此处为obj2)的字段值在其他对象中为空;我要合并它们,并对有价值的进行排序: var obj2 = { options: [ null ], name: "name1", } var obj1 = { options: [ {"option": "option1"} ], name: "name1", } desiredOutput = {

我有几个结构相同的物体;其中一些对象的某些字段值为空,而其中一个对象(此处为obj2)的字段值在其他对象中为空;我要合并它们,并对有价值的进行排序:

var obj2 = {
    options: [
        null
    ],
    name: "name1",
}

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

desiredOutput = {
    options: [
        {"option": "option1"}
    ],
    name: "name1",
}
我的尝试: 我试过洛达斯;但洛达斯的问题是,秩序有效果;也就是说,无论哪个对象最后出现,该对象都会覆盖前面提到的字段中的对象:

我试过洛达斯;这里myArray是一个obj1、obj2

    var newResults = {};
    for (var i = 0; i < myArray.length; i++) {
        newResults = lodash.extend(newResults, myArray[i]);
    }
var newResults={};
对于(var i=0;i
对于这个问题,最干净的解决方案是什么?
谢谢

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

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

newResults
将是数组中
options
不包含
null

的第一个对象。为了澄清,您将有一个对象数组,如
obj1
obj2
,您希望合并数组中的所有对象,以便包含
null
的任何
options
数组都将被数组中的下一个对象覆盖?确切地说,但是包含null的options数组不一定会被数组中的下一个对象覆盖,事实上是被具有该字段值的对象覆盖(选项)因此,选项数组应该被右侧第一个不包含
null
的对象覆盖。也许我的问题不清楚;我现在更改了对象的名称!它们不符合顺序!好的,但要小心,因为在这个问题中顺序很重要。从对象数组的开头开始,是否要保留first
options
array不包含非空值?简单明了!非常好