Javascript 合并数组中的对象并保持相同属性的最大值

Javascript 合并数组中的对象并保持相同属性的最大值,javascript,arrays,object,multidimensional-array,Javascript,Arrays,Object,Multidimensional Array,我有这个数组,我想合并其中的对象 [null, null, {"1":1},{"2":1},{"3":1},{"2":2},{"5":1}] 我想用这样的东西: VarO1={a:1,b:1,c:1}; VarO2={b:2,c:2}; var o3={c:3}; var obj=Object.assign{},o1,o2,o3; console.logobj;//{a:1,b:2,c:3}您可以从库中使用它 使用香草javascript: 函数getDataobj{ var d={};

我有这个数组,我想合并其中的对象

[null, null, {"1":1},{"2":1},{"3":1},{"2":2},{"5":1}]
我想用这样的东西:

VarO1={a:1,b:1,c:1}; VarO2={b:2,c:2}; var o3={c:3}; var obj=Object.assign{},o1,o2,o3; console.logobj;//{a:1,b:2,c:3}您可以从库中使用它


使用香草javascript:

函数getDataobj{ var d={}; 对于obj中的var指数{ var项目=对象[指数]; 对于项目中的var k{ 如果!d[k]d[k]=项目[k]; else d[k]=Math.maxd[k],项[k]; } } console.logd; 返回d; }
getData[null,null,{1:1},{2:1},{3:1},{2:2},{5:1}] 库增加了供应商的规模,所以不要为了这么小的目的而使用它

让输入=[null,null,{1:1},{2:1},{3:1},{2:2},{5:1}]; 让输出={}; 输入中的fori{ 设项目=输入[i]; 项目中的forj 输出[j]=项目[j]; } console.logoutput 使用Arrayreduce将数组转换为对象,并使用ArrayforEach迭代数组中每个对象的键

注意:我已经更新了您的测试用例,使其在较低值之前具有较高的值,以便更好地演示解决方案

常量arr=[null,null,{1:0},{2:3},{5:25},{3:1},{2:2},{5:1},{1:-5}]; const result=arr.reducer,o=>{ 如果!typeofo==='object'| | o===null{ 返回r; } Object.keyso//迭代键 .forEachkey=>r[key]=r[key]!==未定义?Math.maxr[key],o[key]:o[key];//获取最大值 返回r; }, {};
console.logresult;你确定它总是为每一处房产保持最高的价值吗?
var input = [null, null, {"1":1},{"2":1},{"3":1},{"2":2},{"5":1}];
var output = _.mergeWith({}, ...input, (obj, src) => obj > src ? obj : src);