Der ECMAScript5 -Standard wurde am 3. Dezember 2009 veröffentlicht und bietet einige neue Möglichkeiten zur Verbesserung bestehender Array -Array -Operationen. Diese neuartigen Array-Methoden wurden jedoch nicht wirklich populär, da zu dieser Zeit einen Mangel an ES5-fähigen Browsern auf dem Markt gab.
Array "Extras"
Niemand zweifelt an der Praktikabilität dieser Methoden, aber das Schreiben von Polyfill (PS: Plugin kompatibel mit älteren Browsern) ist es für sie nicht wert. Es wird "muss" in "bestes Implementierung" implementiert. Einige Leute nennen diese Array -Methoden Array "Extras" tatsächlich. Warum!
Aber die Zeiten ändern sich. Wenn Sie sich die beliebten Open -Source -JS -Projekte auf GitHub ansehen, werden Sie feststellen, dass sich der Trend ändert. Jeder möchte viele Abhängigkeiten reduzieren (Drittbibliotheken) und sie nur mit lokalem Code implementieren.
OK, fangen wir an.
Meine 5 Arrays
In ES5 gibt es 9 Array-Methoden in der Gesamtzahl http://kangax.github.io/compat-table/es5/
Hinweis* neun Methoden
Array.Prototype.Indexof
Array.Prototype.lastindexof
Array.Prototype.Every
Array.prototype.some
Array.Prototype.foreach
Array.prototype.map
Array.Prototype.filter
Array.Prototype.Reduce
Array.Prototype.REDUCERIGT
Ich werde 5 Methoden auswählen, die ich persönlich für die nützlichste halte, und viele Entwickler werden begegnen.
1) Indexof
Die Indexof () -Methode gibt die Position des ersten Elements im Array zurück, und -1, wenn es nicht existiert.
Wenn der Index nicht verwendet wird
var arr = ['Apple', 'orange', 'pear'], found = false; für (var i = 0, l = arr.length; i <l; i ++) {if (arr [i] === 'orange') {found = true;}} console.log ("gefunden:", gefunden);Nach dem Gebrauch
var arr = ['Apple', 'orange', 'pear']; console.log ("gefunden:", arr.indexof ("orange")! = -1);2) Filter
Die Filter () -Methode erstellt ein neues Array, das den Filterkriterien entspricht.
Wenn filter () nicht verwendet wird
var arr = [{"name": "apple", "count": 2}, {"name": "orange", "count": 5}, {"name": "pear", "count": 3}, {"name": "orange", "coste": 16},]; var newarr = []; für (var i = 0, l = arr.length; i <l; i ++) {if (arr [i] .name === "orange") {newarr.push (arr [i]);}} console.log ("Filterergebnisse:", Newarr);Verwenden Sie filter ():
var arr = [{"name": "apple", "count": 2}, {"name": "orange", "count": 5}, {"name": "pear", "count": 3}, {"name": "orange", "coste": 16},]; var newarr = arr.filter (Funktion (item) {return item.name === "orange";}); console.log ("Filterergebnisse:", Newarr);3) foreach ()
foreach führt die entsprechende Methode für jedes Element aus
var arr = [1,2,3,4,5,6,7,8]; // verwendet das übliche "für" Schleife für die IT -IT -IT -IT (var i = 0, l = arr.Length; i <l; i ++) {console.log (arr [i]);} console iterateArr.foreach (Funktion (Element, Index) {console.log (item);});foreach wird verwendet, um die für die Schleife zu ersetzen
4) map ()
Nach MAP () führt eine bestimmte Operation (MAP) in jedem Element des Arrays aus, ein Neuarray wird zurückgegeben.
Verwenden Sie keine Karte
var Oldarr = [{First_name: "Colin", last_name: "toh"}, {first_name: "addy", last_name: "osmani"}, {first_name: "yehuda", last_name: "katz"}; für (var i = 0, l = Oldarr.length; i <l; i ++) {var item = altearr [i]; item.full_name = [item.first_name, item.last_name] .join ("); newarr [i] = item;} return newarr;} console.log (getNewarr ());Nach Verwendung der Karte
var Oldarr = [{First_Name: "Colin", last_name: "toh"}, {first_name: "addy", last_name: "osmani"}, {first_name: "yehuda", last_name: "katz"}]; Funktion getNewarr () {return Oldarr.map (Funktion (Element, Index) {item.full_name = [item.first_name, item.last_name] .join (""); Rückgabeelement;}); } console.log (getNewarr ());MAP () ist eine sehr praktische Funktion, wenn die vom Server zurückgegebenen Verarbeitungsdaten zurückgegeben werden.
5) reduzieren ()
Reduziert () kann die Funktion eines Akkumulators implementieren und jeden Wert des Arrays (von links nach rechts) auf einen Wert reduzieren.
Um ehrlich zu sein, war es ein bisschen schwierig, diesen Satz am Anfang zu verstehen, es war zu abstrakt.
Szenario: Statistik Wie viele nicht wiederholbare Wörter in einem Array sind
Wenn Sie nicht reduzieren
var arr = ["Apple", "Orange", "Apple", "Orange", "Pear", "Orange"]; Funktion getWordCnt () {var obj = {}; für (var i = 0, l = arr.length; i <l; i ++) {var item = arr [i]; obj [item] = (obj [item] +1) || 1; } return obj;} console.log (getWordCnt ());Nach Verwendung von red () ()
var arr = ["Apple", "Orange", "Apple", "Orange", "Pear", "Orange"]; Funktion getWordCnt () {return arr.R.Recu (function (prev, next) {prev [next] = (prev [next] + 1) || 1; return prev;}, {});Lassen Sie mich zuerst mein eigenes Verständnis von Reduzierung erklären. Reduzieren (Rückruf, InitialValue) wird in zwei Variablen passieren. Rückruffunktion (Rückruf) und InitialValue. Angenommen, die Funktion hat einen eingehenden Parameter, die Prev und Next, Index und Array. Sie müssen Prev und Weiter verstehen.
Im Allgemeinen beginnt die Präv mit dem ersten Element im Array, und als nächstes ist das zweite Element. Wenn Sie jedoch den Anfangswert (initialValue) übergeben, ist der erste Vorgänger initialValue und als nächstes das erste Element im Array.
Zum Beispiel:
/** Der Unterschied zwischen den beiden, führen Sie sie in der Konsole aus und Sie werden wissen*/var arr = ["Apple", "orange"]; Funktion nopassValue () {return arr.R.ReDuce (function (prev, next) {console.log ("prev:", prev); console.log ("nächstes:", nächste); arr.ReRuce (Funktion (prev, next) {console.log ("prev:", prev); console.log ("next:", next); prev [next] = return prev;}, {});} console.log ("no zusätzlicher Parameter:", nopassValue (). Parameter: ", PassValue ());