Ich habe das folgende Array.
var arr = [1,0,2];
Ich möchte das letzte Element entfernen, dh 2.
Ich habe verwendet, arr.slice(-1);
aber es entfernt den Wert nicht.
javascript
arrays
slice
Prithviraj Mitra
quelle
quelle
arr.slice(0,-1)
war die beste Lösung für michsplice()
, zweiter Fall :pop()
.Antworten:
Verwenden Sie Spleiß (Index, Howmany)
quelle
[1].splice(-1, 1)
=>[1]
[0,1,2] -> [2]
zurücklassen[0,1]
. Wenn das der Fall ist, dann[arr.pop()]
wird der Trick tun.array.pop()
sich Änderungen ändernarray
,slice(0, -1)
nicht jedoch. Pop ist natürlich schneller, aber möglicherweise nicht immer für alle Bedürfnisse geeignet.Array.prototype.pop () nach JavaScript-Konvention.
quelle
Sie können dies mit folgenden
.slice()
Methoden tun :Hier ist eine Demo:
anstatt zu tun:
Hier ist eine Demo:
Erläuterung:-
Die grundlegende Syntax der
Array.prototype.slice()
oder kurzslice()
Methode lautet nun:Hier,
Der
begin
Parameter ist ein auf Null basierender Index, bei dem die Extraktion aus einem Array beginnt. Nehmen wir also am obigen Beispiel an, wenn wir so etwas tunes würde alle Array-Elemente vom Beginn der Sequenz von Position 0 zurückgeben und das heißt
[1,0,2]
. Ebenso, wenn wir es tunes würde zurückkehren,
[0,2]
da 0 hier an Position 1 ist und alles danach. In Ihrem Fall haben Sie nun einen negativen Index-1
als Startparameter übergeben, der einen Versatz vom Ende der Sequenz angibt. Also,slice(-1)
in Ihrem Fall extrahiert das letzte Array - Element in der Sequenz und das ist2
( wie wir bereits in der obigen Demo gesehen haben ).Lassen Sie uns nun über den
end
Parameter in derslice()
Methodensyntax sprechen . Es ist wieder ein auf Null basierender Index, bei dem die Extraktion aus einem Array endet. Nehmen wir also an, wir haben ein Array wie: -und wir wollen nur die
2,5,3
Elemente im Array bekommen. Nun Position2
aus der Sequenz starten ist2
und für letztes Element3
ist4
. Wir müssen die Extraktion hier um Position 5 beenden, da wir das Element vor dieser Position erhalten müssen. Also werden wir einfach implementierenslice()
Methode wieIn Ihrem Fall haben wir als Endparameter implementiert
-1
, sodass unser Code wie folgt istGibt als negativer Index
end
einen Versatz vom Ende der Sequenz an. So,slice(0,-1)
extrahiert das erste Element durch das zweite bis letztes Element in der Sequenz. So erhalten wir die gewünschte Ausgabe. Wir können auch gerne machenWir werden die gleiche Ausgabe erhalten. Aber ich habe
-1
hier verwendet , da es einfacher zu implementieren ist, selbst für ein langes Array wieWenn Sie nur das letzte Element entfernen möchten, möchten Sie hier nicht sitzen und die Position der letzten 9 berechnen
arr.slice(0, 22)
. Sie können dann einfach die negative Indexlogik hier & do implementierenIch hoffe es hilft!
quelle
arr
, sondern ein neues Array zurückgibt, das dieses letzte Element ausschließt. In Mozillas Dokumenten heißt es: "Die Slice () -Methode gibt eine flache Kopie eines Teils eines Arrays in ein neues Array-Objekt zurück."arr.slice(0, -1)
ist die beste Antwort.Lernen Sie anhand eines Beispiels:
quelle
Sie müssten dies tun, da
slice
das ursprüngliche Array nicht geändert wird.Wenn Sie das ursprüngliche Array ändern möchten, können Sie Folgendes verwenden
splice
:oder
pop
:quelle
Ich würde es als
.pop()
die 'richtigste' Lösung betrachten, aber manchmal funktioniert es möglicherweise nicht, da Sie ein Array ohne das letzte Element genau dort verwenden müssen ...In einem solchen Fall möchten Sie möglicherweise Folgendes verwenden, es wird zurückgegeben
[1,2,3]
während
.pop()
würde zurückkehren4
:was vielleicht nicht wünschenswert ist ...
Hoffe das spart dir etwas Zeit.
quelle
Dafür gibt es eine Funktion, Erklärung hier :
quelle
Sie könnten einfach verwenden,
arr.pop()
Dadurch wird der letzte Eintrag des Arrays entfernt.
quelle
Verwenden Sie einfach Folgendes für Ihren Anwendungsfall:
Nur eine Notiz. Wenn Sie die
pop()
Funktion ausführen , obwohl die Zeile das geknallte Element zurückgibt, wird das ursprüngliche Array ausgeführt und das geknallte Element entfernt.quelle
Sie können dies auf zwei Arten tun
splice()
:arr.splice(-1,1)
arr.splice(arr.length-1,1)
splice(position_to_start_deleting, how_many_data_to_delete)
nimmt zwei Parameter.position_to_start_deleting
: Der auf Null basierende Index, von dem aus das Löschen beginnen soll.how_many_data_to_delete
: Aus dem angegebenen Index, wie viele aufeinanderfolgende Daten gelöscht werden sollen.Sie können auch das letzte Element mit entfernen ,
pop()
wiepop()
entfernt von einem Array das letzte Element.Verwenden
arr.pop()
quelle
arr.slice(-1)
wird eine Kopie zurückgeben des letzten Elements des Arrays zurück, lässt jedoch das ursprüngliche Array unverändert.n
Verwenden Sie, um die letzten Elemente aus einem Array zu entfernenarr.splice(-n)
Sie (beachten Sie das "p" in "splice"). Der Rückgabewert ist ein neues Array, das die entfernten Elemente enthält.Noch einfacher, für den
n == 1
Gebrauchval = arr.pop()
quelle
// entfernt das letzte Element // muss überprüft werden, ob arr.length> 0 ist
quelle
quelle
Spleiß (Index, wie viele) - Diese Lösung klingt gut. Diese Anleitung funktioniert jedoch nur für den positiven Array-Index. Verwenden Sie den Index selbst, um die letzten zwei oder drei Elemente zu entfernen.
Spleißen Sie beispielsweise (-2), um die letzten beiden Elemente zu entfernen. Spleiß (-3) zum Entfernen der letzten drei Elemente.
quelle
Es ist erwähnenswert , dass die Feststellung
slice
wird sowohl ein Rückkehr neues Array, während.pop()
und.splice()
das mutiert bestehendes Array.Wenn Sie gerne Datensammlungen mit einem verketteten Befehlsstil verarbeiten, sollten Sie sich wirklich an
slice
so etwas halten.Zum Beispiel:
Es kann viel mehr Flickschusterei erfordern, und variable Management, die gleiche Art der Sache zu tun mit „Pop“, da im Gegensatz zu
map
,filter
usw, bekommt man nicht ein neues Array zurück.Es ist dasselbe, bei
push
dem ein Element am Ende eines Arrays hinzugefügt wird. Sie könnten besser dran sein,concat
da Sie so den Fluss am Laufen halten können.quelle
Mit Lodash können Sie dropRight verwenden , wenn Sie nicht wissen möchten , welche Elemente entfernt wurden:
quelle
quelle
2019 ECMA5-Lösung:
Zerstörungsfrei, generisch, einzeilig und erfordert nur ein Kopieren und Einfügen am Ende Ihres Arrays.
quelle
I would like to remove the last element
. Dies erfordert eine destruktive / mutierende Operation am ursprünglichen Array.sag du hast
var arr = [1,0,2]
arr.splice(-1,1)
wird zu dir zurückkehren,array [1,0];
währendarr.slice(-1,1)
zu dir zurückkehren wirdarray [2];
quelle
Dies ist ein guter Weg, um das letzte Element zu entfernen:
Detail des Spleißes wie folgt:
Spleiß (startIndex, Anzahl der Spleiße)
quelle
Die Ausgabe lautet : Array [0,1,2,3,4,5] . Auf diese Weise können Sie die gleiche Anzahl von Array-Elementen beibehalten, während Sie einen neuen Wert eingeben.
quelle
Ein anderer Ansatz besteht darin, basierend auf dem Index zu filtern:
Hinweis:
filter()
Erstellt ein neues Array und ändert das vorhandene nicht.quelle
Wenn Sie n Elemente in Javascript vom Ende des Arrays entfernen möchten, können Sie einfach Folgendes verwenden:
quelle