我想使用 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/