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

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


当前回答

一些人建议在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调用中使用了=>。

其他回答

此外,对于简单数组,使用es6求和。

const sum = [1, 2, 3].reduce((partial_sum, a) => partial_sum + a,0);
 
console.log(sum); 

对于具有默认初始化值的对象数组

const totalAmount = obj => 
    Object.values(obj).reduce((acc, { order_qty, mrp_price }) => 
    acc + order_qty * mrp_price, 0);
    
    console.log(totalAmount); 

我看到这是一个老问题,但几乎没有任何答案实际使用jQuery,特别是按照提问者的要求使用$.each。有一种方法可以做到这一点,但许多人建议的本机方法(即使用Array.reduce())要好得多,也更容易。

如果您必须使用jQuery,请使用以下方法:

  var arr = [1,2,3,4];
  var sum = 0;
  
  $.each( arr, (i, v) => sum += v);

  alert(sum); // This will be 10

您可以使用for of循环求和,如下所示:

let arr = [1, 2, 3, 4];
let total = 0;
for (let i of arr) {
  total += i;
}
console.log(total)

对于真正大量的人来说,循环或减少可能是过程密集型的。使用高斯怎么样?

sum = (n * (n+1))/2;

来自mathcentral。

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

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)