Vorwort
Ein im Interview aufgetretenes Problem: die JS -Array -Summenfunktion. Das erste, woran ich denke, sind Array -Schleifen. Ich denke jedoch, dass der Interviewer diese Frage gestellt hat, um die bekannte Methode nicht aufzunehmen. Zu dieser Zeit war ich so klug, dass ich an die rekursive Funktion nachdenkt, die das Array ständig hinzufügte, aber ich konnte die Methode nach langer Zeit nicht anpassen. Es stellte sich heraus, dass dies nicht die optimale Lösung war. Schließlich fragte mich der Interviewer, ob ich reduce() schon einmal gesehen habe, aber es war wirklich nicht. Wenn ich also die Informationen nachschließe, ist Array.reduce() ein neues Attribut, das ES5 hinzugefügt wurde, und ähnliche sind Array.reduceRight()。
Fassen wir die Methode zum Summieren von Arrays unten zusammen.
Der raueste Weg: Schleifenakquisition
Fügen Sie eins nach dem anderen durch die für die Loop hinzu. Schauen Sie sich den Code an:
Array.Prototype.sum = function () {var result = 0; für (var i = 0; i <this.Length; i ++) {result+= this [i]; } return Ergebnis;}; [1,4,7,2,10] .sum (); // 24Verwenden Sie die Verringerung der Methode
Mit der Reduzierung der reduce können Sie eine sum zum Summieren eines Arrays schreiben.
reduce() empfängt eine Funktion als Akkumulator, und jeder Wert im Array (von links nach rechts) wird zu schrumpfen und ist ein Wert.
Syntax von Reduzierung:
Array.Reduce (Rückruf [, initialValue]);
Die callback akzeptiert 4 Parameter: previousValue (der vom letzten Rückruf zurückgegebene Wert), currentValue (das aktuelle Element, das verarbeitet wird), index (Index) und das Array selbst (der erste Parameter des callback wird zum ersten Mal aufgerufen) und führt die Funktion für jeden Wert im Array aus.
Der Parameter initialValue ist optional und zeigt den Anfangswert an. Wenn initialValue angegeben ist, wird er als der ursprünglich verwendete previous Wert angesehen. Wenn Standardeinstellung, wird das erste Element des Arrays als previous Anfangswert verwendet, und current ist ein Ort auf der Rückseite.
Array.Prototype.sum = function () {return this.Reduce (Funktion (partiell, value) {return partial + value;})}; [1,4,7,2,10] .sum (); // 24 Im Vergleich zur ersten Methode ist die Verwendung reduce() effizienter.
Der Effizienzvergleich dieser beiden Methoden kann new Date() vor und nach der Funktion direkt aufrufen, um die Echtzeitzeit zu erhalten, wodurch die Ausführungszeit über den Zeitunterschied verglichen wird. Ich werde es hier nicht vergleichen, weil die Ausführungsumgebung aller unterschiedlich unterschiedlich ist. Das Testergebnis ist, dass die Ausführungszeit der reduce() kürzer ist.
JS -Array -Summenfunktion und finden Sie den Maximalwert im Array
Beispielcode
<! DocType html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transsitional.dtd"><Htmlmlml xmlns = "http://www.w3.org/1999/xhtml"> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb2312" /><Title> </metaNwords summation summation summation methode Content = "Webmaster, Webseite Spezialeffekte, Webseite Spezialeffektcode, JS-Spezialeffekte, JS-Skripte, Skripte, Werbecodes, vevb.com, www.vevb.com, Wulin.com" /> <meta name = "Beschreibung" Content "content =" www.vevb.com, Wulin.com, Webmasters Muss JS Special Effekte haben. Downloads, alle auf wulin.com "/> </head> <body> <a href =" // www.vevb.com/">wulin.com </a>, müssen Webmaster über hochwertige Webseite Spezialeffekte und Werbecodes verfügen. VEVB.com, Webmaster JS Spezialeffekte. <hr> <script type = "text/javaScript"> // sum array.prototype.sum = function () {for (var sum = i = 0; i <this.Length; i ++) sum+= parseInt (this [i]); return sum;}; // maximal value array.prototype.maxima = function () {for (var i = 0, maxValue = number.min_value; i <this.Length; i ++) parseInt (this [i])> maxValue && (maxvalue = this [i]); return maxValue;}; // anwenden var arr = [1,21,3,4,22,45,60,7,32]; alert (arr.join (" +") + "=" + arr.sum ()); alert (arr.join ("|") + ", die größte Zahl lautet:" + arr.maxima ()); </script> </body> </html>Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für die Verwendung von JavaScript aller hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht und besprechen Sie sie. Der Herausgeber wird alle rechtzeitig antworten.