Javascript 合并对象的最干净方法
我有几个结构相同的物体;其中一些对象的某些字段值为空,而其中一个对象(此处为obj2)的字段值在其他对象中为空;我要合并它们,并对有价值的进行排序:Javascript 合并对象的最干净方法,javascript,node.js,lodash,Javascript,Node.js,Lodash,我有几个结构相同的物体;其中一些对象的某些字段值为空,而其中一个对象(此处为obj2)的字段值在其他对象中为空;我要合并它们,并对有价值的进行排序: var obj2 = { options: [ null ], name: "name1", } var obj1 = { options: [ {"option": "option1"} ], name: "name1", } desiredOutput = {
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
的对象覆盖。也许我的问题不清楚;我现在更改了对象的名称!它们不符合顺序!好的,但要小心,因为在这个问题中顺序很重要。从对象数组的开头开始,是否要保留firstoptions
array不包含非空值?简单明了!非常好