2013-10-04 28 views
11

Ich konnte hier kein Beispiel finden, wonach ich wirklich suche. Ich möchte alle Array-Elemente multiplizieren, wenn also ein Array [1,2,3] enthält, wäre die Summe 1 * 2 * 3 = 6; Bis jetzt habe ich diesen Code, aber es gibt undefined zurück.Multiplizieren Sie alle Elemente im 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]); 

Könnte jemand bitte erklären, was fehlt mir hier? Danke im Voraus!

Hier Sir, Sie haben vergessen, die Array-Variable hinzuzufügen! Die Funktion SPEKTE eine Variable, so:

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

Sollte nicht die letzte Zeile sein wie diese console.log (multiplizieren ([1,2,3])); – MonkeyCoder

Antwort

8

Sie müssen () haben, wenn Sie die Funktion aufrufen.

Wie multiply([1,2,3])

Demo here

+0

Gott, ich bin schusselig! Vielen Dank. –

+0

@JohSmith, froh, dass ich helfen konnte. Immer gut, wenn viele Leute den Code betrachten :) – Sergio

1

Sie sind nicht mehrfach als eine Funktion aufrufen:

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

Die Ursache ist bereits bekannt. Hier ist eine Alternative - mit Array.reduce für Ihre Methode:

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

See also

+0

Vergessen Sie nicht, die gewünschte Browser-Unterstützung für Array.reduce zu überprüfen: http://kangax.github.io/compat-table/es5/#Array.prototype.reduce Ansonsten ist lodash/underscore _.reduce eine nette Alternative –

+0

Es wird erwähnt und es gibt einen Polyfill in der MDN-Verbindung (der 'Siehe auch' Link in der Antwort) – KooiInc

+4

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

Verwandte Themen