给定一个数组[1,2,3,4],如何求其元素的和?(在这种情况下,总数为10。)
我认为每个美元可能有用,但我不确定如何实现它。
给定一个数组[1,2,3,4],如何求其元素的和?(在这种情况下,总数为10。)
我认为每个美元可能有用,但我不确定如何实现它。
当前回答
精确
对数组进行排序并以最小的数字开始求和(代码段显示了与非排序的区别)
[...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
其他回答
一小段JavaScript代码就能完成这项工作:
var numbers = [1,2,3,4];
var totalAmount = 0;
for (var x = 0; x < numbers.length; x++) {
totalAmount += numbers[x];
}
console.log(totalAmount); //10 (1+2+3+4)
arr.reduce(function (a, b) {
return a + b;
});
参考:Array.prototype.reduce()
有人在找像我这样的功能性的oneliner吗?
假设:
const arr = [1, 2, 3, 4];
这是现代JS的一条直线:
sum = arr.reduce((a, b) => a + b, 0);
(如果您碰巧需要支持没有箭头功能的旧IE:)
sum = arr.reduce(function (a, b) {return a + b;}, 0);
注意,这里的初始值是0,因此如果需要,可以将其用作偏移量。还要注意,需要这个初始值,否则使用空数组调用函数将出错。
使用for循环:
const array = [1, 2, 3, 4];
let result = 0;
for (let i = 0; i < array.length - 1; i++) {
result += array[i];
}
console.log(result); // Should give 10
甚至是forEach循环:
const array = [1, 2, 3, 4];
let result = 0;
array.forEach(number => {
result += number;
})
console.log(result); // Should give 10
为简单起见,请使用reduce:
const array = [10, 20, 30, 40];
const add = (a, b) => a + b
const result = array.reduce(add);
console.log(result); // Should give 100
使用reduce
设arr=[1,2,3,4];设和=arr.reduce((v,i)=>(v+i));console.log(总和);