2013-10-04 32 views
11

Nie mogłem znaleźć tutaj przykładu, którego tak naprawdę szukam. Chciałbym pomnożyć wszystkie elementy tablicy, więc jeśli tablica zawiera [1,2,3], suma będzie wynosić 1 * 2 * 3 = 6; Do tej pory mam ten kod, ale zwraca niezdefiniowany.Pomnożyć wszystkie elementy w tablicy

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

Czy ktoś mógłby mi wyjaśnić, czego tu brakuje? Z góry dziękuję!

Tutaj, Sir, zapomniałeś dodać zmienną tablicy! Funkcja spects zmienną, więc:

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

Nie powinno być Twoja ostatnia linia jak ten console.log (pomnożyć ([1,2,3])); – MonkeyCoder

Odpowiedz

8

Trzeba mieć () podczas wywoływania funkcji.

Jak multiply([1,2,3])

Demo here

+0

Boże, jestem roztrzepany! Ogromne dzięki. –

+0

@JohSmith, cieszę się, że mogłem pomóc. Zawsze dobrze mieć wielu ludzi patrzących na kod :) – Sergio

1

Nie dzwonisz pomnożyć jako funkcję:

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

Przyczyną jest już znane. Oto alternatywa - używając Array.reduce dla metody:

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

See also

+0

Nie zapomnij sprawdzić żądanej obsługi przeglądarki dla Array.reduce: http://kangax.github.io/compat-table/es5/#Array.prototype.reduce w przeciwnym razie, loda/podkreślenie _.reduce jest dobrą alternatywą –

+0

Jest wspomniany i jest polyfill w łączu MDN (link "Zobacz także" w odpowiedzi) – KooiInc

+4

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

Powiązane problemy