给定一个数组[1,2,3,4],如何求其元素的和?(在这种情况下,总数为10。)

我认为每个美元可能有用,但我不确定如何实现它。


当前回答

var total = 0;
$.each(arr,function() {
    total += this;
});

其他回答

一些人建议在Array.prototype中添加.sum()方法。这通常被认为是不好的做法,所以我不建议您这样做。

如果你仍然坚持这样做,那么这是一种简洁的写作方式:

Array.prototype.sum = function() {return [].reduce.call(this, (a,i) => a+i, 0);}

然后:[1,2].sum();//3.

注意,添加到原型中的函数使用了ES5和ES6函数以及箭头语法的混合。声明该函数是为了允许该方法从正在操作的Array中获取this上下文。为了简洁起见,我在reduce调用中使用了=>。

//Try this way

const arr = [10,10,20,60]; 
const sumOfArr = (a) =>{
    let sum=0;
    for(let i in a) { 
        sum += a[i];
    }
    return sum;
}
console.log(sumOfArr(arr))

了解底层流程的最简单答案:

let array = [10, 20, 30, 40, 50]
let total = 0

for(let i in array)
{
    total += array[i]
}

console.log(total)

&如果您已经熟悉底层流程,那么内置方法可以节省您的时间:

let array = [10, 20, 30, 40, 50]
let total = array.reduce((x, y) => x + y)
console.log(total)

也可以使用reduceRight。

[1,2,3,4,5,6].reduceRight(function(a,b){return a+b;})

其结果输出为21。

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight

为什么不减少?这通常有点反直觉,但使用它求和非常简单:

var a = [1,2,3];
var sum = a.reduce(function(a, b) { return a + b; }, 0);