Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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_Lodash - Fatal编程技术网

Javascript 合并并添加数组中对象的值

Javascript 合并并添加数组中对象的值,javascript,lodash,Javascript,Lodash,我被这件事缠住了。我有一个对象数组。所有对象都具有具有不同值的相同关键点。像这样 [{'fxiC6Y9ZyAM7BA35': 58, '1z5WcPsr97Szv4TM': 58, 'HDcNgheglFuoZ78d': 64, 'x7IkUjDjikXTpubn': 64, '7lnJSC07g1PoDycH': 128}, {'fxiC6Y9ZyAM7BA35': 74, '1z5WcPsr97Szv4TM': 74, 'HDcNgheglFuoZ78d': 82, 'x7IkUjDjikX

我被这件事缠住了。我有一个对象数组。所有对象都具有具有不同值的相同关键点。像这样

[{'fxiC6Y9ZyAM7BA35': 58, '1z5WcPsr97Szv4TM': 58, 'HDcNgheglFuoZ78d': 64, 'x7IkUjDjikXTpubn': 64, '7lnJSC07g1PoDycH': 128},
{'fxiC6Y9ZyAM7BA35': 74, '1z5WcPsr97Szv4TM': 74, 'HDcNgheglFuoZ78d': 82, 'x7IkUjDjikXTpubn': 82, '7lnJSC07g1PoDycH': 164},
{'fxiC6Y9ZyAM7BA35': 74, '1z5WcPsr97Szv4TM': 74, 'HDcNgheglFuoZ78d': 78, 'x7IkUjDjikXTpubn': 78, '7lnJSC07g1PoDycH': 156}]
我可以访问Lodash,但找不到将每个键的值合并并添加到一个对象中的最佳方法

{fxiC6Y9ZyAM7BA35: 206, 1z5WcPsr97Szv4TM: 206, HDcNgheglFuoZ78d: 224, x7IkUjDjikXTpubn: 224, 7lnJSC07g1PoDycH: 448}
你可以用

const input=[{'fxiC6Y9ZyAM7BA35':58,'1z5WcPsr97Szv4TM':58,'hdcngheglefuoz78d':64,'x7IkUjDjikXTpubn':64,'7lnJSC07g1PoDycH':128},
{'fxiC6Y9ZyAM7BA35':74,'1z5WcPsr97Szv4TM':74,'hdcngheglefuoz78d':82,'x7IkUjDjikXTpubn':82,'7lnJSC07g1PoDycH':164},
{'fxiC6Y9ZyAM7BA35':74,'1z5WcPsr97Szv4TM':74,'hdcngheglefuoz78d':78,'x7IkUjDjikXTpubn':78,'7lnJSC07g1PoDycH':156}
]
常量输出=输入。减少((acc,cur)=>{
Object.keys(cur.forEach)(key=>{
如果(!acc[key])acc[key]=0;
acc[键]+=电流[键];
});
返回acc;
}, {});

控制台日志(输出)您可以将这些链接到lodash:

const res = _.chain(data)
  .flatMap(_.toPairs)
  .groupBy(_.head)
  .mapValues((pair) => _.reduce(pair, (sum, [_, val]) => sum + val, 0))
  .value();
逐步:

  • 使用
    将其展平到键值对数组中。flatMap
    [
      ["fxiC6Y9ZyAM7BA35", 58],
      ["1z5WcPsr97Szv4TM", 58],
      ["HDcNgheglFuoZ78d", 64],
      ["x7IkUjDjikXTpubn", 64],
      ["7lnJSC07g1PoDycH", 128],
      ["fxiC6Y9ZyAM7BA35", 74],
      ["1z5WcPsr97Szv4TM", 74],
      ["HDcNgheglFuoZ78d", 82],
      ["x7IkUjDjikXTpubn", 82],
      ["7lnJSC07g1PoDycH", 164],
      ["fxiC6Y9ZyAM7BA35", 74],
      ["1z5WcPsr97Szv4TM", 74],
      ["HDcNgheglFuoZ78d", 78],
      ["x7IkUjDjikXTpubn", 78],
      ["7lnJSC07g1PoDycH", 156],
    ]
    
  • 按键分组,带有
    。.groupBy
    {
      fxiC6Y9ZyAM7BA35: [
        [ 'fxiC6Y9ZyAM7BA35', 58 ],       
        [ 'fxiC6Y9ZyAM7BA35', 74 ],       
        [ 'fxiC6Y9ZyAM7BA35', 74 ]        
      ],
      '1z5WcPsr97Szv4TM': [
        [ '1z5WcPsr97Szv4TM', 58 ],       
        [ '1z5WcPsr97Szv4TM', 74 ],       
        [ '1z5WcPsr97Szv4TM', 74 ]        
      ],
      HDcNgheglFuoZ78d: [
        [ 'HDcNgheglFuoZ78d', 64 ],       
        [ 'HDcNgheglFuoZ78d', 82 ],       
        [ 'HDcNgheglFuoZ78d', 78 ]        
      ],
      x7IkUjDjikXTpubn: [
        [ 'x7IkUjDjikXTpubn', 64 ],       
        [ 'x7IkUjDjikXTpubn', 82 ],       
        [ 'x7IkUjDjikXTpubn', 78 ]        
      ],
      '7lnJSC07g1PoDycH': [
        [ '7lnJSC07g1PoDycH', 128 ],      
        [ '7lnJSC07g1PoDycH', 164 ],      
        [ '7lnJSC07g1PoDycH', 156 ]       
      ]
    }
    
  • 映射每个组的值,并使用每个值计算总和
演示

const数据=[
{
fxiC6Y9ZyAM7BA35:58,
“1z5WcPsr97Szv4TM”:58,
HDcNgheglFuoZ78d:64,
x7IkUjDjikXTpubn:64,
“7lnJSC07g1PoDycH”:128,
},
{
fxiC6Y9ZyAM7BA35:74,
“1z5WcPsr97Szv4TM”:74,
HDcNgheglFuoZ78d:82,
x7IkUjDjikXTpubn:82,
“7lnJSC07g1PoDycH”:164,
},
{
fxiC6Y9ZyAM7BA35:74,
“1z5WcPsr97Szv4TM”:74,
HDcNgheglFuoZ78d:78,
x7IkUjDjikXTpubn:78,
“7lnJSC07g1PoDycH”:156,
},
];
const res=uu.chain(数据)
.flatMap(u.toPairs)
.groupBy(u.head)
.mapValues((pair)=>.reduce(pair,(sum,[[uu,val])=>sum+val,0))
.value();
控制台日志(res)

使用lodash的
..mergeWith()
并添加合并属性的值:

[代码>警察数据收集收集收集到的一些数据数据收集收集到的一些数据数据收集收集到的一些数据收集到的一些数据,例如:58,“HDCNGGHGGGGGGGGGGGGG78D:64,”X7-GGGGGGGGGGGGGGGGGGGU78D:64,“X7-IKUJJJJJJJJJJJJJJJKKKKKKUUU78D:4:64”,64,64,“X7-JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKJJJJJJJJJJJJJKKKKKKKKKKKKKK,“7lnJSC07g1PoDycH”:156}] const result=\与({},…数据合并,(ov=0,sv)=>ov+sv) console.log(结果)

条件是必需的,如果不是,+=不起作用谢谢你的回复。我应该发布我的进度,我已经非常接近了。谢谢!!