2013-10-04 78 views
11

我在这里找不到一个示例,这是我真正想要的。 我想乘以所有的数组元素,所以如果一个数组包含[1,2,3]的总和将是1 * 2 * 3 = 6; 到目前为止,我已经得到了这段代码,但是它返回undefined。将数组中的所有元素相乘

function multiply (array) { 
    var sum=1; 
    for (var i=0; i<array.length; i++) { 
     sum = sum * array[i]; 
    } 
    return sum; 
} 
console.log(multiply[1,2,3]); 

任何人都可以请解释一下,我在这里错过了什么?提前致谢!

这里先生,你忘了添加数组变量! 功能重视域变量,那么:

function multiply (array) { 
    var sum = 1; 
    for (var i = 0; i < array.length; i++) { 
     sum = sum + array[i]: 
    } 
    return sum; 
} 
console.log(multiply(array)); 
+2

应该不是你的最后一行是这样的console.log(乘([1,2,3])); – MonkeyCoder

回答

8

你需要有(),当你调用该函数。

multiply([1,2,3])

演示here

+0

上帝,我很尴尬!非常感谢。 –

+0

@JohSmith,很高兴我能帮上忙。总是有很多人在看代码:) – Sergio

1

你不乘调用一个函数:

multiply([1,2,3]); 
28

原因是已知的。这里有一个选择 - 使用Array.reduce为你的方法:

[1,2,3].reduce(function(a,b){return a*b;}); //=> 6 

See also

+0

不要忘了检查你想要的Array.reduce的浏览器支持:http://kangax.github.io/compat-table/es5/#Array.prototype.reduce否则,lodash /下划线的_.reduce是一个不错的选择 –

+0

它被提及并且在MDN链接中有一个polyfill(答案中的'See also'链接) – KooiInc

+4

ES6:'[1,2,3] .reduce( (a,b)=> a * b);' –

相关问题