给定一个数组[1,2,3,4],如何求其元素的和?(在这种情况下,总数为10。)
我认为每个美元可能有用,但我不确定如何实现它。
给定一个数组[1,2,3,4],如何求其元素的和?(在这种情况下,总数为10。)
我认为每个美元可能有用,但我不确定如何实现它。
当前回答
这要容易得多
function sumArray(arr) {
var total = 0;
arr.forEach(function(element){
total += element;
})
return total;
}
var sum = sumArray([1,2,3,4])
console.log(sum)
其他回答
我知道这是一个老帖子。但我只是想分享我对这个问题的看法。
let myArr = [1, 3, 4, 5, 6, 7, 8];
let counter = 0;
for(let i = 0; i < myArr.length; i++){
counter = counter + myArr[i];
console.log(counter);}
带reduce()
[1, 2, 3, 4].reduce((a, b) => a + b, 0); // 10
使用forEach()
let sum = 0;
[1, 2, 3, 4].forEach(n => sum += n);
sum; // 10
带参数
function arrSum(arr) {
sum = 0;
arr.forEach(n => sum += n);
return sum;
}
arrSum([1, 2, 3, 4]) // 10
您可以尝试以下代码:
[1, 2, 3, 4].reduce((pre,curr)=>pre+curr,0)
精确
对数组进行排序并以最小的数字开始求和(代码段显示了与非排序的区别)
[...arr].sort((a,b)=>a-b).reduce((a,c)=>a+c,0)
arr=[,6,9,1,1,1,1,.1,.1]sum=arr.reduce((a,c)=>a+c,0)sortSum=[…arr].sort((a,b)=>a-b).reduce((a、c)=>a+c,0)console.log('sum:',sum);console.log('sortSum:',sortSum);console.log('sum==sortSum:',sum==sortSum);//我们使用.sort((a,b)=>a-b)代替.sort(),因为//第二个将元素视为字符串(因此方式错误)//例如[1,10,9,20,93].sort()-->[1,10,20,9,93]
对于多维数字数组,使用arr.flat(无限)
arr=[[[1,2,3,4],[1,2,3,4],[1,2,4],[ [1,2,3,4],[1,2,3,4],[1,2,3,4] ] ];sum=arr.flat(无限).reduce((a,c)=>a+c,0);console.log(总和);//60
没有人提到函数式编程,但在这种情况下使用Ramda是非常干净的方法:
//Assuming you use nodejs, but can also be used in browser
const R = require('ramda');
let nums = [2, 4, 6, 8, 10];
console.log(R.sum(nums));