Es ist schon komisch, dass die JavaScript-Array-Klasse keine letzte Methode zum Abrufen des letzten Elements eines Arrays bietet. Ich weiß, dass die Lösung einfach ist (Ar [Ar.length-1]), aber dennoch wird dies zu häufig verwendet.
Gibt es ernsthafte Gründe, warum dies noch nicht berücksichtigt wurde?
javascript
Nikhil Garg
quelle
quelle
item= array.pop();
.array[array.length-1]
ist Weise schneller als die anderen.(Ar[Ar.length-1])
bekommt 20x bessere Leistung für mich.Antworten:
Weil sich Javascript sehr langsam ändert. Und das liegt daran, dass die Browser langsam aktualisiert werden.
Viele Javascript-Bibliotheken implementieren ihre eigene
last()
Funktion. Verwenden Sie eine!quelle
last()
Funktion zu schreiben . Die Frage betraf die Art der Entwicklung der Javascript-Kernsprache selbst.Sie können so etwas tun:
Code-Snippet anzeigen
Die Anzahl der Hilfsmethoden, die einer Sprache hinzugefügt werden können, ist unendlich. Ich nehme an, sie haben einfach nicht darüber nachgedacht, diesen hinzuzufügen.
quelle
Es ist einfach, einen selbst zu definieren. Das ist die Stärke von JavaScript.
Dies kann jedoch zu Problemen mit Code von Drittanbietern führen, der (fälschlicherweise) verwendet wird
for..in
Schleifen verwendet, um über Arrays zu iterieren.Wenn Sie nicht mit jedoch gebunden sind Browser - Unterstützung Problemen, dann die neue ES5 - Syntax zu Eigenschaften zu definieren , diese Frage zu lösen, indem die Funktion nicht-zählbaren machen, etwa so:
quelle
for..in
Problem zu lösen . Sicher, wir sind noch nicht mit einer umfassenden Implementierung von ES5 da, aber es ist gut genug, dies jetzt zu wissen, da Browser, einschließlich IE9, schnell aufholen.this.length - 1
ausgewertet-1
, was, da es sich um eine negative Zahl handelt, als Array-Eigenschaft und nicht als Elementindex behandelt wird.i = [].concat(loves).pop(); //corn
Ikone Katze liebt Popcorn
quelle
Eine weitere Option, insbesondere wenn Sie bereits UnderscoreJS verwenden, ist:
quelle
quelle
null
oderundefined
?this[l-1]
Wenn Sie nur zurückkehren , erhalten Sieundefined
wie gewohnt Zugriff auf nicht vorhandene Eigenschaften. Persönlich würde JS lieber eine Ausnahme werfen als zurückkehrenundefined
, aber JS zieht es vor, Fehler unter den Teppich zu kehren.Kam hierher und suchte selbst nach einer Antwort auf diese Frage. Die Slice-Antwort ist wahrscheinlich die beste, aber ich habe eine "letzte" Funktion erstellt, um das Erweitern von Prototypen zu üben, also dachte ich, ich würde weitermachen und sie teilen. Es hat den zusätzlichen Vorteil gegenüber einigen anderen, dass Sie optional rückwärts durch das Array zählen und beispielsweise das vorletzte oder das vorletzte Element herausziehen können. Wenn Sie keine Anzahl angeben, wird standardmäßig 1 verwendet und das letzte Element herausgezogen.
quelle
last(4)
oderlast(9)
verlieren, dh;last
Hier ist eine weitere einfachere Möglichkeit, letzte Elemente zu schneiden
lastObj
ist jetzt["barfoo"]
.Python macht das genauso und als ich versuchte, JS zu verwenden, hat es geklappt. Ich vermute, dass die Manipulation von Zeichenfolgen in Skriptsprachen genauso funktioniert.
Wenn Sie die letzten beiden Objekte in einem Array haben möchten,
wird dir geben
["foobar", "barfoo"]
und so weiter.quelle
lastObj
wird enthalten["barfoo"]
. Warum sollte ich es auf jeden Fall tun,Array.prototype.slice.call(tags
anstatt nurtags.slice
?pop()
Methode wird den letzten Wert herausspringen lassen. Das Problem ist jedoch, dass Sie den letzten Wert im Array verlierenquelle
Ja oder einfach nur:
Wenn Sie den Wert und keine neue Liste möchten.
quelle