2013-10-04 26 views
11

Non sono riuscito a trovare un esempio qui che cosa stavo davvero cercando. Mi piacerebbe moltiplicare tutti gli elementi dell'array, quindi se un array contiene [1,2,3] la somma sarebbe 1 * 2 * 3 = 6; Finora ho questo codice, ma restituisce undefined.Moltiplica tutti gli elementi nell'array

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

Qualcuno potrebbe spiegare, cosa mi manca qui? Grazie in anticipo!

Qui Signore, ti sei dimenticato di aggiungere la variabile di matrice! La funzione ASPETTI una variabile, in modo da:

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

Non dovrebbe la tua ultima linea di essere come questo console.log (moltiplicare ([1,2,3])); – MonkeyCoder

risposta

8

È necessario avere () quando si chiama la funzione.

Come multiply([1,2,3])

Demo here

+0

Dio, sono sconvolto! Enorme grazie –

+0

@JohSmith, felice di poterti aiutare. Sempre bello avere molte persone che guardano il codice :) – Sergio

1

Non stai chiamando moltiplicano in funzione:

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

La causa è già noto. Ecco un'alternativa - utilizzando Array.reduce per il metodo:

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

See also

+0

Non dimenticare di controllare il supporto del browser desiderato per Array.reduce: http://kangax.github.io/compat-table/es5/#Array.prototype.reduce in caso contrario, _.reduce lodash/di sottolineatura è una bella alternativa –

+0

e 'menzionato e c'è un polyfill nel MDN-link (il link 'Vedi anche' nella risposta) – KooiInc

+4

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

Problemi correlati