在JavaScript中获取数组列的总和
Get sum of array columns in JavaScript
我们有数组:
[1, 2, 3, 0]
[1, 2, 3]
[1, 2]
需要获得一个单数组,索引将类似于列的总和。预期结果:
[3, 6, 6, 0]
您可以将Array.prototype.reduce()
与Array.prototype.forEach()
结合使用。
var array = [
[1, 2, 3, 0],
[1, 2, 3],
[1, 2]
],
result = array.reduce(function (r, a) {
a.forEach(function (b, i) {
r[i] = (r[i] || 0) + b;
});
return r;
}, []);
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
循环基本,
var arr = [[1, 2, 3, 0],[1, 2, 3],[1, 2]];
var res = [];
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr[i].length;j++){
res[j] = (res[j] || 0) + arr[i][j];
}
}
console.log(res); //[3, 6, 6, 0]
function arrayColumnsSum(array) {
return array.reduce((a, b)=> // replaces two elements in array by sum of them
a.map((x, i)=> // for every `a` element returns...
x + // its value and...
(b[i] || 0) // corresponding element of `b`,
// if exists; otherwise 0
)
)
}
console.log(arrayColumnsSum([
[1, 2, 3, 0]
,[1, 2, 3]
,[1, 2]
]))
您可以使用map()
和reduce()
执行类似操作
// function to get sum of two array where array length of a is greater than b
function sum(a, b) {
return a.map((v, i) => v + (b[i] || 0))
}
var res = [
[1, 2, 3, 0],
[1, 2, 3],
[1, 2]
// iterate over array to reduce summed array
].reduce((a, b) => a.length > b.length ? sum(a, b) : sum(b, a))
document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');
相关文章:
- 如何遍历包含对象的数组-javascript
- 保存数组javascript
- 查找数组javascript中包含的元素类型
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 从多维数组javascript中提取特定值
- 如何在数组javascript中选择伪随机值
- 拆分字符串数组(JavaScript)后未定义
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 使用条件for循环更新数组-Javascript
- 从数组javascript创建新对象
- 用数组(javascript)中的值替换regex捕获
- 从数组[Javascript]的总长度中减去一个干净的数字
- 将一个字符串数组解析为一个新的数组javascript
- 如何将对象转换为对象数组javascript
- 赢得't循环数组javascript
- 从不同的数组 JavaScript 中获取值
- 多维数组 JAVASCRIPT 出了点问题
- 可以't分配给一个对象数组javascript
- 比较数组JavaScript中的对象
- 如何完成缺少(连续)元素的数组|Javascript