首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >最快的JavaScript求和

最快的JavaScript求和
EN

Stack Overflow用户
提问于 2010-09-22 00:54:42
回答 8查看 152.2K关注 0票数 78

在JavaScript中对数组求和的最快方法是什么?快速搜索一下a few different methods,但如果可能的话,我想要一个本机解决方案。这将在SpiderMonkey下运行。

在我一直使用的盒子里思考:

代码语言:javascript
复制
var count = 0;
for(var i = 0; i < array.length; i++)
{
    count = count + array[i];
}

我相信有一种比直接迭代更好的方法。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-09-22 00:58:49

您应该能够使用reduce

代码语言:javascript
复制
var sum = array.reduce(function(pv, cv) { return pv + cv; }, 0);

Source

而在ES6中引入了arrow functions,事情就更简单了:

代码语言:javascript
复制
sum = array.reduce((pv, cv) => pv + cv, 0);
票数 151
EN

Stack Overflow用户

发布于 2013-08-06 05:19:36

在寻找数组求和的最佳方法时,我写了一个性能测试。

在Chrome中,"reduce“似乎要优越得多

我希望这能帮到你

代码语言:javascript
复制
// Performance test, sum of an array
  var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  var result = 0;
// Eval
  console.time("eval");
  for(var i = 0; i < 10000; i++) eval("result = (" + array.join("+") + ")");
  console.timeEnd("eval");
// Loop
  console.time("loop");
  for(var i = 0; i < 10000; i++){
    result = 0;
    for(var j = 0; j < array.length; j++){
      result += parseInt(array[j]);
    }
  }
  console.timeEnd("loop");
// Reduce
  console.time("reduce");
  for(var i = 0; i < 10000; i++) result = array.reduce(function(pv, cv) { return pv + parseInt(cv); }, 0);
  console.timeEnd("reduce");
// While
  console.time("while");
  for(var i = 0; i < 10000; i++){
    j = array.length;
    result = 0;
    while(j--) result += array[i];
  }
  console.timeEnd("while");

eval: 5233.000ms

循环时间: 255.000ms

reduce: 70.000ms

而: 214.000ms

票数 21
EN

Stack Overflow用户

发布于 2017-06-15 23:09:02

或者你可以用邪恶的方式来做。

代码语言:javascript
复制
var a = [1,2,3,4,5,6,7,8,9];

sum = eval(a.join("+"));

;)

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3762589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档