1533 Stimmen

So finden Sie die Summe einer Reihe von Zahlen

Angesichts eines Arrays [1, 2, 3, 4] Wie kann ich die Summe seiner Elemente finden? (In diesem Fall würde die Summe lauten 10 .)

Ich dachte $.each könnte nützlich sein, aber ich bin mir nicht sicher, wie man es implementiert.

37 Stimmen

@tereško Unlust zu googeln ist kein gültiger Abschlussgrund auf Stackoverflow. Bitte stimmen Sie ab, wenn Sie das Gefühl haben, dass die Frage nicht gut (re)gesucht ist. (Auch nach den Antworten zu urteilen, scheint dies ein sehr kontroverses Thema mit vielen möglichen Lösungen zu sein, einschließlich einiger sehr hoch bewerteter schlechter Praktiken (eval) - überraschenderweise).

13 Stimmen

Hinweis: Die meisten Antworten hier berechnen im Wesentlichen a[0] + a[1] + ... was sich in eine String-Verkettung verwandeln kann, wenn das Array Nicht-Zahlen-Elemente enthält. z.B. ['foo', 42].reduce((a,b)=>a+b, 0) === "0foo42" .

4 Stimmen

Kein eingebauter Reducer, den man in Array.reduce einspeisen könnte? Ich dachte an etwas wie [1,2,3].reduce(Math.sum) .

16voto

Md.Shakil Shaikh Punkte 119

Sie können den folgenden Code ausprobieren:

[1, 2, 3, 4].reduce((pre,curr)=>pre+curr,0)

13voto

Rohit Bhalke Punkte 137

Sie können auch reduceRight verwenden.

[1,2,3,4,5,6].reduceRight(function(a,b){return a+b;})

die als 21 ausgegeben wird.

Referenz: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight

0 Stimmen

Sollte in Chrome schneller sein, weil die Optimierung für Javascript-Schleifen (d.h. die Verringerung der Länge) auch auf die zugrunde liegende Assembly angewendet werden kann, um sie schneller laufen zu lassen.

11voto

nano Punkte 127

Eine Standard-JavaScript-Lösung:

var addition = [];
addition.push(2);
addition.push(3);

var total = 0;
for (var i = 0; i < addition.length; i++)
{
    total += addition[i];
}
alert(total);          // Just to output an example
/* console.log(total); // Just to output an example with Firebug */

Das funktioniert bei mir (das Ergebnis sollte 5 sein). Ich hoffe, dass diese Art von Lösung keinen versteckten Nachteil mit sich bringt.

1 Stimmen

Außerdem kann jeder C- oder Java-Programmierer dies verstehen.

0 Stimmen

Für den einfachen Zweck der Summierung aller Werte hat die einfache alte for-Schleife keine Konkurrenten in Bezug auf die Ausführungszeit

0 Stimmen

Das einzige Problem ist, dass es ein bisschen ärgerlich ist, wenn man 20 for-Schleifen hat, die alle ineinander verschachtelt sind

10voto

electron Punkte 767

Lustiger Ansatz:

eval([1,2,3].join("+"))

7 Stimmen

Könnten Sie bitte diese Antwort erweitern und erklären, was in diesem Code geschieht? Warum funktioniert er? Was tut er genau? Diese Dinge tragen dazu bei, die Qualität der Antwort zu verbessern.

0 Stimmen

@user40521 hat das schon so beantwortet, wie ich denke. Ich habe es nicht gesehen.

0 Stimmen

Dies ist zwar kurz und bündig und sicherlich interessant, aber auch sehr ineffizient. Verwendung von reduce ist in den meisten, wenn nicht in allen Fällen vorzuziehen.

9voto

CandyPaintedRIMS Punkte 159

Ich bin ein Anfänger mit JavaScript und Codierung im Allgemeinen, aber ich fand, dass eine einfache und leichte Möglichkeit, die Zahlen in einem Array zu summieren ist wie folgt:

    var myNumbers = [1,2,3,4,5]
    var total = 0;
    for(var i = 0; i < myNumbers.length; i++){
        total += myNumbers[i];
    }

Im Grunde wollte ich diesen Beitrag leisten, weil ich nicht viele Lösungen gesehen habe, die keine eingebauten Funktionen verwenden, und diese Methode ist einfach zu schreiben und zu verstehen.

2 Stimmen

Wie unterscheidet sich dies von diese Antwort von 2012 o diese Antwort von 2014 ? Es gibt zwei Lösungen, die Sie noch nicht gesehen haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X