it-swarm.com.de

Letztes Element aus dem Array entfernen

Ich habe das folgende Array.

var arr = [1,0,2];

Ich möchte das letzte Element entfernen, d. H. 2.

Ich habe arr.slice(-1); verwendet, aber der Wert wird nicht gelöscht.

307

Verwenden Sie Splice (Index, Howmany)

arr.splice(-1,1)
407
Anton
let fruit = ['Apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();

console.log(popped); // "tomato"
console.log(fruit); // ["Apple", "orange", "banana"]

Dokumentation von Array.prototype.pop im MDN

455
Stuart Kershaw

Sie können dies mit der .slice() -Methode wie folgt tun:

arr.slice(0, -1);    // returns [1,0]

Hier ist eine Demo:

var arr = [1, 0, 2];
var newArr = arr.slice(0, -1);    // returns [1,0]

console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array    : </b>
<div id="div1"></div>
<br/>
<b>After slice(0, -1): </b>
<div id="div2"></div>

statt zu tun:

arr.slice(-1);   // returns [2]

Hier ist eine Demo:

var arr = [1, 0, 2];
var newArr = arr.slice(-1);    // returns [2]

console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array    : </b>
<div id="div1"></div>
<br/>
<b>After slice(-1): </b>
<div id="div2"></div>

Erklärung: -

Die grundlegende Syntax der Array.prototype.slice() oder kurz slice() Methode lautet:

arr.slice([begin[, end]])

Hier, 

der Parameter begin ist ein auf null basierender Index, an dem die Extraktion aus einem Array beginnt. Nehmen wir also an obiges Beispiel, wenn wir so etwas tun

arr.slice(0)    // returns [1,0,2]

es würde alle Array-Elemente vom Anfang der Sequenz von Position 0 aus zurückgeben, und das ist [1,0,2]. Ebenso, wenn wir es tun

arr.slice(1)    // returns [0,2]

es würde [0,2] zurückgeben, da 0 hier auf Position 1 steht und alles danach. In Ihrem Fall haben Sie nun einen negativen Index übergeben, d. H. -1 als Anfangsparameter, der einen Versatz vom Ende der Sequenz angibt. So extrahiert slice(-1) in Ihrem Fall das letzte Array-Element in der Sequenz und das ist 2 (wie wir bereits in der obigen Demo gesehen haben).

Kommen wir nun zum Parameter end in der Syntax der slice()-Methode. Es ist wieder ein nullbasierter Index, an dem die Extraktion aus einem Array endet. Nehmen wir an, wir haben ein Array wie: -

var arr = [1, 0, 2, 5, 3, 9];

und wir möchten nur die 2,5,3-Elemente in das Array aufnehmen. Die Position von 2 vom Anfang der Sequenz ist jetzt 2 und für das letzte Element 3 ist es 4. Wir müssen die Extraktion hier eine Position 5 beenden, da wir das Element vor dieser Position erhalten müssen. Also werden wir hier einfach die slice()-Methode implementieren

arr.slice(2, 5)    // returns [2,5,3]

In Ihrem Fall haben wir -1 als Endparameter implementiert, daher ist unser Code gleich

arr.slice(0, -1)   // returns [1,0]

Als negativer Index gibt end einen Versatz vom Ende der Sequenz an. So extrahiert slice(0,-1) das erste Element durch das vorletzte Element in der Sequenz. So erhalten wir die gewünschte Ausgabe. Wir können das auch gerne machen

arr.slice(0, 2)    // returns [1,0]

wir erhalten die gleiche Ausgabe. Aber ich habe -1 hier verwendet, da es einfacher ist, ihn auch für lange Arrays zu implementieren

[0,2,3,1,2,9,3,6,3,9,1,0,2,9,0,1,1,2,3,4,7,9,1]

Wenn Sie nur das letzte Element entfernen möchten, möchten Sie hier nicht die Position der letzten 9 und die do like arr.slice(0, 22) berechnen. Sie können dann einfach die Negativindexlogik hier implementieren 

arr.slice(0, -1) // same result as arr.slice(0, 22)

Ich hoffe es hilft!

194
palaѕн

lernen am Beispiel:

let array_1 = [1,2,3,4];
let array_2 = [1,2,3,4];
let array_3 = [1,2,3,4];

array_1.splice(-1,1)  // output --> [4]      array_1 = [1,2,3]
array_2.slice(0,-1);  // output --> [1,2,3]  array_2 = [1,2,3,4]
array_3.pop();        // output --> 4        array_3 = [1,2,3]
37
Lukas

Sie müssen dies tun, da slice das ursprüngliche Array nicht ändert. 

arr = arr.slice(-1);

Wenn Sie das ursprüngliche Array ändern möchten, können Sie splice verwenden:

arr.splice(-1, 1);

oder pop:

arr.pop();
31
Bill Criswell

Dafür gibt es eine Funktion, Erklärung hier :

arr.pop();
17
JoDev

Sie können einfach arr.pop() verwenden.

Dadurch wird der letzte Eintrag des Arrays entfernt.

var arr = [1,0,2]; 
var popped = arr.pop();//Now arr = [1,0] & popped = 2
12
Krishna

Ich würde .pop() als die "richtigste" Lösung betrachten, aber manchmal funktioniert es nicht, da Sie Array ohne das letzte Element verwenden müssen ...

In einem solchen Fall möchten Sie vielleicht Folgendes verwenden 

var arr = [1,2,3,4];
console.log(arr.splice(0,arr.length-1));

während .pop() das zurückgeben würde (4):

var arr = [1,2,3,4];
console.log(arr.pop());

was vielleicht nicht wünschenswert ist ...

Ich hoffe, das erspart Ihnen etwas Zeit.

7

Sie können dies auf zwei Arten mit splice() tun:

  1. arr.splice(-1,1)
  2. arr.splice(arr.length-1,1)

splice(position_to_start_deleting, how_many_data_to_delete) akzeptiert zwei Parameter.

position_to_start_deleting: Der auf Null basierende Index, von dem aus mit dem Löschen begonnen werden soll. how_many_data_to_delete: Aus dem angegebenen Index, wie viele aufeinanderfolgende Daten gelöscht werden sollen.

Sie können das letzte Element auch mit pop() entfernen, da pop() das letzte Element aus einem Array entfernt.
Verwenden Sie arr.pop()

7
Harunur Rashid

Diese Methode ist hilfreich beim Löschen und Speichern des letzten Elements eines Array.

var sampleArray = [1,2,3,4];// Declaring the array
var lastElement = sampleArray.pop();//this command will remove the last element of `sampleArray` and stores in a variable called `lastElement` so that you can use it if required.

Nun sind die Ergebnisse:

console.log(sampleArray); //This will give you [1,2,3]
console.log(lastElement); //this will give you 4
5
razat naik

arr.slice(-1) gibt ein copy des letzten Elements des Arrays zurück, das ursprüngliche Array bleibt jedoch unverändert.

Um die letzten n-Elemente aus einem Array zu entfernen, verwenden Sie arr.splice(-n) (beachten Sie das "p" in "splice"). Der Rückgabewert ist ein neues Array, das die entfernten Elemente enthält.

Noch einfacher, für n == 1, verwenden Sie val = arr.pop()

5
Alnitak
var arr = [1,0,2];
arr.length--; 

// entfernt das letzte Element// muss prüfen, ob arr.length> 0 ist

4
Nirav Shah

Es ist erwähnenswert, dass slice ein neues Array zurückgibt, wohingegen .pop() und .splice() das vorhandene Array mutieren werden.

Wenn Sie Sammlungen von Daten mit einem verketteten Befehlsstil bearbeiten möchten, sollten Sie unbedingt mit slice für so etwas bleiben.

Zum Beispiel:

myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var newArrayOfThings = myArray
  .filter(x => x > 5)              // only bigly things
  .slice(-1)                       // get rid of the last item
  .map(x => `The number is: ${x}`);// map to a set of strings

Es kann viel mehr Durcheinander und Variablenmanagement erforderlich sein, um mit "pop" die gleichen Dinge zu tun, da im Gegensatz zu map, filter usw. kein neues Array zurückgegeben wird.

Mit Push ist es dasselbe, was ein Element am Ende eines Arrays hinzufügt. Mit concat sind Sie vielleicht besser dran, da Sie damit den Fluss weiterführen können.

myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var newArrayOfThings = myArray
  .filter(x => x > 5)              // only bigly things
  .slice(-1)                       // get rid of the "10"
  .concat([100])                   // note with concat, you must pass an array
  .map(x => `The number is: ${x}`) // map to a set of strings
  

3
pete otaqui

splice (Index, Howmany) - Diese Lösung hört sich gut an. This howmany funktioniert jedoch nur für den positiven Array-Index. Um die letzten zwei oder drei Elemente zu entfernen, verwenden Sie den Index selbst. 

Zum Beispiel Splic (-2), um die letzten beiden Elemente zu entfernen. Spleiß (-3) zum Entfernen der letzten drei Elemente.

3
Parthyz

sagen Sie haben var arr = [1,0,2]

arr.splice(-1,1) wird zu Ihnen array [1,0]; zurückkehren, während arr.slice(-1,1) zu Ihnen zurückkehrt array [2];

2
miukki
var stack = [1,2,3,4,5,6];

stack.reverse().shift();

stack.Push(0);

Die Ausgabe erfolgt wie folgt: Array [0,1,2,3,4,5] ..__ Damit können Sie die gleiche Anzahl von Array-Elementen beibehalten, wie Sie einen neuen Wert einschieben. 

1
Blackspade

Mit Lodash können Sie dropRight verwenden, wenn Sie nicht wissen möchten, welche Elemente entfernt wurden:

_.dropRight([1, 2, 3])
// => [1, 2]

_.dropRight([1, 2, 3], 2);
// => [1]
1
Tomas Buteler

So entfernen Sie den letzten Artikel:

if (arr != null && arr != undefined && arr.length > 0) {
      arr.splice(arr.length - 1, 1);
}

Detail des Spleißes wie folgt:

Spleiß (startIndex, Anzahl der Spleiße)

1
var a = [1,2,3,4,5,6]; 
console.log(a.reverse().slice(1).reverse());
//Array(5) [ 1, 2, 3, 4, 5 ]
0
Daphoque