如何使用javascript获取数组元素的和?

如何使用javascript获取数组元素的和?,javascript,Javascript,我有一个数组 var Mark = [1,2,3,4,5]; &我希望在应用javascript后得到以下结果 var result=15; 我在用for循环 var result= 0; for(var i = 0; i < Mark.length; i++) { result += Mark[i]; } 此代码是否正确, 我确信有一种比直接迭代更好的方法,任何人请帮助我最快的方法可能是在您创建时使用一个简单的循环 以下是一种不同的方法,使用: 我建议你看一看下划线 这个

我有一个数组

 var Mark = [1,2,3,4,5];
&我希望在应用javascript后得到以下结果

var result=15;
我在用for循环

var result= 0;
for(var i = 0; i < Mark.length; i++)
{
    result += Mark[i];
}
此代码是否正确, 我确信有一种比直接迭代更好的方法,任何人请帮助我

最快的方法可能是在您创建时使用一个简单的循环

以下是一种不同的方法,使用:


我建议你看一看下划线

这个库将使您的javascript生活更加轻松

这就是你用它来求和的方法

var Mark = [1,2,3,4,5];
var sum = _.reduce(Mark, function(memo, num){ return memo + num; }, 0);
var Mark=[1,2,3,4,5],sum=0,l=Mark.length; 而l-总和+=标记[l]; 日志'sum is:',sum; 打开控制台…试试这个

var result= 0;
 for(var i = 0; i < Mark.length; i++)
 {
    result+= Mark[i];
 }

如果缓存阵列的长度,然后对其执行反向循环,则速度最快:

var arr = [1,2,3],
    sum = 0,
    i   = arr.length;

while( i-- )
    sum += arr[i];  // 6

这有点玩弄文字,但如果你的数组实际上只由从0到m的连续整数组成,或者更一般地说,由n到m的连续整数组成,具有恒定的公共差d或步长(如果你愿意),你可以做一些更好更快的事情

在你描述的情况下

var n = 1;
var m = 5; // (the length of your array)
var d = 1; // you increment with for each element
// n m and d describe [1,2,3,4,5]

var sum = ((m * (m + 1) / 2) - ((n - 1) * n / 2)) * d;
不需要循环,但这只适用于



撇开玩笑不谈,循环通常是一件好事,只要你不依赖于相同的变量边界嵌套太多的变量。

循环是最好的方法。这段代码绝对正确。要了解更多方法,请查看此处,您可以使result=result+Mark[i];结果+=标记[i];但除此之外,我看不到任何真正的方法来改善这一点。你说的更好的方法是什么意思?这种方式有什么问题?这不是更好的方式为什么不呢?它在MDN文档中:这个答案可能没有用处,它仍然没有害处,我不明白为什么这值得投反对票。@vsync,我同意这不是一个论点,但这不是一个更好的方式,不是一个真正好的论点,看看这里的代码,你会明白:这与下划线.js无关。是的,所以他应该包括一个巨大的库来总结一个数组?你在开玩笑吧。下划线是纯js,我刚从他那里提出一个建议,让他开始看看在javascript世界中对他有帮助的东西。@vsync由OP决定,我只是提出了一个建议,因为我看到OP在js上是新的,所以除了手动循环之外,了解一些东西会很好。现在比一年前好。我们必须鼓励好的编码,或者这就是我在这里的目标。那么为什么要下划线而不是loadash呢?速度快得多。如果我们谈的是良好的实践OP要求更好,而不是更快你是谁,他的律师?请解释一下,在你的非专业观点中,你为什么认为这不是最好的方法。你的方法更快,这不值得讨论,但如果你如此仔细地看不到谁是非专业的,那么更快并不意味着更好?我重复我已经说过的,我的目标是打开开发者的思维,而不是让它成为解决问题的猴子。很多词,但这不是哲学课,这是一个非常简单的问题,只有一个答案。所有其他答案在任何方面都不是更好的,它们是达到目标的方法,而不是方法。是的,我本可以在这里列出许多实现目标的创意,但重点是,它们都是不好的做法,不应该用于如此简单的事情。在引擎盖下,它们也是这样做的,所以为什么不直接用猴子无法理解的最少代码来说明问题呢。如果可能的话,总是使用最基本的代码。@dariogriffo-无论如何,他要求的是更好的,而不是其他的。更好!=另外
var n = 1;
var m = 5; // (the length of your array)
var d = 1; // you increment with for each element
// n m and d describe [1,2,3,4,5]

var sum = ((m * (m + 1) / 2) - ((n - 1) * n / 2)) * d;