![](/img/trans.png)
[英]Javascript: Merge Objects in array with different key/value pairs, and getitng the sum from the same keys
[英]javascript sum value by key from array of array of objects
我想按键对 object 值求和。 我有一个 arrays 对象数组。
这里:[ 1 : https://stackoverflow.com/questions/48550691/how-to-sum-all-of-values-from-specific-key-in-object][1]
我找到了这个:
var arr = [{ 'credit': 1, 'trash': null }, { 'credit': 2, 'trash': null}]; console.log(arr.reduce((total, obj) => obj.credit + total,0)); // 3
我有多个 arrays 对象,因此:
var arr2 = [ [{ 'credit': 1, 'trash': null }, { 'credit': 2, 'trash': null}], [{ 'credit': 3, 'trash': null }, { 'credit': 3, 'trash': null}] ]; for (var i=0; i<arr2.length; i++) { console.log( arr2[i].reduce((total, arr2[i]) => arr2[i].credit + total,0)); }
尝试访问特定数组时,我从 Google Chrome 收到此错误消息“未捕获的语法错误:无效的解构分配目标”。
我不知道如何解决它。 我用谷歌搜索没有成功。
我想获得循环每次迭代的总数。 在给出的示例中,这将是:3 然后 6
TIA。
展平数组,然后.reduce
求和。
var arr2 = [ [{ 'credit': 1, 'trash': null }, { 'credit': 2, 'trash': null}], [{ 'credit': 3, 'trash': null }, { 'credit': 3, 'trash': null}] ]; console.log(arr2.flat().reduce((total, obj) => obj.credit + total,0));
如果您不想变平,您也必须对内部 arrays 使用嵌套的.reduce
。
var arr2 = [ [{ 'credit': 1, 'trash': null }, { 'credit': 2, 'trash': null}], [{ 'credit': 3, 'trash': null }, { 'credit': 3, 'trash': null}] ]; console.log( arr2.reduce( (total, subarr) => total + subarr.reduce( (a, { credit }) => a + credit, 0 ), 0 ) );
如果您不关心全部总数,而只关心每个子数组的总数,那么只需对数组的每个元素执行简单的.reduce
即可。
var arr2 = [ [{ 'credit': 1, 'trash': null }, { 'credit': 2, 'trash': null}], [{ 'credit': 3, 'trash': null }, { 'credit': 3, 'trash': null}] ]; for (const subarr of arr2) { console.log(subarr.reduce((total, obj) => obj.credit + total,0)); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.