2013-10-04 4 views
11

내가 실제로 찾고있는 예제를 찾을 수 없습니다. 모든 배열 요소를 곱하고 싶습니다. 배열에 [1,2,3]이 포함되어 있으면 합계는 1 * 2 * 3 = 6이됩니다. 지금까지이 코드가 있지만 정의되지 않은 값을 반환합니다.배열의 모든 요소에 곱하기

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]); 

아무에게도 설명하지 못하겠습니까? 여기서 무엇을 놓치고 있습니까? 미리 감사드립니다!

여기 선생님, 배열 변수를 추가하는 것을 잊었습니다! 기능은 그래서 변수를 spects :

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

당신은 당신이 함수를 호출 할 때 ()이 필요합니다.

here

+0

하느님, 나는 산만 해졌습니다! 큰 감사. –

+0

@ JohSmith, 도와 줘서 기쁩니다. 많은 사람들이 코드를보고 항상 좋은 것입니다 :) – Sergio

1

데모

multiply([1,2,3])처럼 당신은 함수로 다중 호출하지 않는 :

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/underscore의 _.reduce가 좋은 대안입니다. –

+0

MDN 링크 (대답의 '참고 자료'링크)에 polyfill이 있습니다. – KooiInc

+4

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

관련 문제