繁体   English   中英

javascript 对象数组中的键值总和

[英]javascript sum value by key from array of array of objects

我想按键对 object 值求和。 我有一个 arrays 对象数组。

这里:[ 1https://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 收到此错误消息“未捕获的语法错误:无效的解构分配目标”。

我使用的编辑器 Sublime 突出显示了一个语法错误。 Sublime 编辑器突出显示语法错误

我不知道如何解决它。 我用谷歌搜索没有成功。

我想获得循环每次迭代的总数。 在给出的示例中,这将是: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM