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

Javascript 使用动态关键点减少对象数组

Javascript 使用动态关键点减少对象数组,javascript,functional-programming,underscore.js,Javascript,Functional Programming,Underscore.js,这看起来应该很简单,但我的搜索没有找到任何结果 我有一个如下所示的对象数组: [{"A":4,"B":2},{"A":2,"B":1},{"A":3,"B":1},{"A":2,"B":1,"C":1}] 我想把它展平成这样(我认为是reduce函数): 对象的起始数组是更大、更复杂的起始对象转换的产物。重要的细节是键本身具有任意值(即,您可能会看到'D'和'e',但代码本身需要对此视而不见)。我已经使用下划线.js实现了这一点,我希望找到类似的干净、函数式解决方案。获取键/值对并更新总和

这看起来应该很简单,但我的搜索没有找到任何结果

我有一个如下所示的对象数组:

[{"A":4,"B":2},{"A":2,"B":1},{"A":3,"B":1},{"A":2,"B":1,"C":1}]
我想把它展平成这样(我认为是reduce函数):


对象的起始数组是更大、更复杂的起始对象转换的产物。重要的细节是键本身具有任意值(即,您可能会看到'D'和'e',但代码本身需要对此视而不见)。我已经使用下划线.js实现了这一点,我希望找到类似的干净、函数式解决方案。

获取键/值对并更新总和

var data=[{A:4,B:2},{A:2,B:1},{A:3,B:1},{A:2,B:1,C:1}],
结果=数据.reduce((r,o)=>(Object.entries(o).forEach([k,v])=>r[k]=(r[k]|0)+v),r),{});

控制台日志(结果)请发布您的尝试。考虑到ES5内置的功能,不需要任何额外的功能。啊,这样就可以了。我一直在想,这是否需要一个内部的每个关键集。谢谢你的帮助!是否有理由(代码清晰之外)传入初始值“{}”,而不是用第一个元素启动累加器?它遵循数据的非变异方法。在没有startValue的情况下,第一个对象发生了变异。
{"A": 11, "B": 5, "C": 1}