2013-10-04 83 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);' –

相關問題