0

将数组中的每个项目添加到结果中。这是我尝试过的。

function sum(array) {
  var result = 0;
    result += forEach(array);
  return result;
}

我知道的方法是这样的

function sum(numbers) {
  var total = 0;
  forEach(numbers, function (number) {
    total += number;
  });
  return total;
}
show(sum([1, 10, 100]));
4

3 回答 3

1

您的代码几乎是正确的。

function sum(numbers) {
  var total = 0;
  numbers.forEach(function (number) {
    total += number;
  });
  return total;
}
show(sum([1, 10, 100]));

您使用total作为一个闭包来聚合结果是非常好的。

我不知道是什么show,但我猜你已经在别处定义了它。另请注意,Array.forEach旧浏览器可能不可用(想到 IE8)。

于 2013-08-18T07:29:00.030 回答
0

forEach函数不是Javascript语言的组成部分,因此我们无法确定。

话虽如此,该功能极不可能以这样的方式result += forEach(array)工作。(它必须以某种方式猜测它应该将所有参数加在一起并返回结果,这适用于这个用例。)


值得一提的是,Perl 中存在一个类似的结构:

$result += $_ foreach @array;
于 2013-08-18T07:18:52.467 回答
0

forEach在 JavaScript 中不作为函数存在。您可以将for (var prop in obj)其用作类似的构造,但适用于对象 ( {})而不适用于数组 ( [])。在这里,您可能必须使用类似的东西

var sum=0,len=arr.length
for (var i=0;i<len;i++) sum+=arr[i];  
于 2013-08-18T07:20:31.140 回答