javascript - 多维数组之和javascript

标签 javascript arrays sum

我想使用 JavaScript 使用 forEach、map、reduce 函数对每个子数组执行求和操作,以便最终我的输出应如下所示:

总和 = [8,13,22]

但我没有得到所需的输出。请帮助我哪里出错了。谢谢。

var Data = [{"a":1,"b":2,"c":5},{"a":3,"b":4,"c":6},{"a":6,"b":7,"c":9}];
var newArr = [];
Data.forEach(function(item) { 
  item = item.reduce(function(a, b) {
    return a + b;
  });
  newArr.push([item]);
});
console.log(newArr);

最佳答案

您可以直接映射求和值。

var data = [{ a: 1, b: 2, c: 5 }, { a: 3, b: 4, c: 6 }, { a: 6, b: 7, c: 9 }],
    result = data.map(o => Object.values(o).reduce((a, b) => a + b));

console.log(result);

<小时/>

只是给定代码的一些注释:

您不能使用reduce迭代对象,因为它仅适用于数组。为了解决这个问题,您只需要通过取 Object.values 来获取对象的值。然后,您可以迭代这些值。

然后返回总和,而不将其包装在数组中。

var Data = [{"a":1,"b":2,"c":5},{"a":3,"b":4,"c":6},{"a":6,"b":7,"c":9}];
var newArr = [];
Data.forEach(function(item) { 
    var sum = Object.values(item).reduce(function(a, b) {
        return a + b;
    });
    newArr.push(sum);
});

console.log(newArr);

更好的解决方案是使用 Array#map ,因为数组的每个元素都需要一个值。

var data = [{"a":1,"b":2,"c":5},{"a":3,"b":4,"c":6},{"a":6,"b":7,"c":9}];
    newArr = data.map(function(item) { 
        return Object.values(item).reduce(function(a, b) {
            return a + b;
        });
    });

console.log(newArr);

关于javascript - 多维数组之和javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48692027/

相关文章:

java - 如何在java中创建具有不同数据类型的 map 列表?

ios - 理解 swift 3 中的平等?

python - 按字符串名称 Pandas 求和

php - 如何让 SUM 可见?

javascript - 如何使用 jQuery 在单击和鼠标悬停时使可滚动的 div 滚动

javascript - 用js编写的二次公式求解器不起作用

javascript - 将成功添加到双 jquery/ajax post

javascript - 我们如何通过 Javascript 从 CSS 文件中删除填充?

c - 为什么以下程序在获取数组中的输入后停止工作?

mysql - SQL SUM 前 5 个值然后 JOIN 结果