给定一个数组[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
其他回答
可以将reduce()方法与lambda表达式结合使用:
[1, 2, 3, 4].reduce((accumulator, currentValue) => accumulator + currentValue);
一小段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)
我是JavaScript和一般编码的初学者,但我发现一种简单易行的方法可以将数组中的数字相加,如下所示:
var myNumbers = [1,2,3,4,5]
var total = 0;
for(var i = 0; i < myNumbers.length; i++){
total += myNumbers[i];
}
基本上,我想贡献这一点,因为我没有看到很多不使用内置函数的解决方案,而且这种方法很容易编写和理解。
var total = 0;
$.each(arr,function() {
total += this;
});
Object.defineProperty(Object.prototype, 'sum', {
enumerable:false,
value:function() {
var t=0;for(var i in this)
if (!isNaN(this[i]))
t+=this[i];
return t;
}
});
[20,25,27.1].sum() // 72.1
[10,"forty-two",23].sum() // 33
[Math.PI,0,-1,1].sum() // 3.141592653589793
[Math.PI,Math.E,-1000000000].sum() // -999999994.1401255
o = {a:1,b:31,c:"roffelz",someOtherProperty:21.52}
console.log(o.sum()); // 53.519999999999996