851 Stimmen

Entfernen Sie das letzte Element aus dem Array

Ich habe folgendes Array.

var arr = [1,0,2];

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

Ich habe arr.slice(-1); verwendet, aber es entfernt den Wert nicht.

1039voto

Stuart Kershaw Punkte 15083

Array.prototype.pop() nach JavaScript-Konvention.

let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();

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

758voto

Anton Punkte 32069

Verwenden Sie splice(startPosition, deleteCount)

array.splice(-1)

var array = ['abc','def','ghi','123'];
var removed = array.splice(-1);  //letztes Element
console.log( 'array:', array );
console.log( 'removed:', removed );

473voto

palaѕн Punkte 69086

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

arr.slice(0, -1);    // gibt [1,0] zurück

Hier ist eine Demo:

var arr = [1, 0, 2];
var newArr = arr.slice(0, -1);    // gibt [1,0] zurück

console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');

Ursprüngliches Array    : 

Nach slice(0, -1): 

anstatt:

arr.slice(-1);   // gibt [2] zurück

Hier ist eine Demo:

var arr = [1, 0, 2];
var newArr = arr.slice(-1);    // gibt [2] zurück

console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');

Ursprüngliches Array    : 

Nach slice(-1): 

Erklärung:-

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

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

Hierbei ist der Parameter begin der nullbasierte Index, ab dem die Extraktion aus einem Array beginnt. Nehmen wir also an, dass wir basierend auf dem obigen Beispiel etwas wie

arr.slice(0)    // gibt [1,0,2] zurück

ausführen, würden alle Array-Elemente ab dem Anfang der Sequenz ab Index 0 zurückgegeben, das heißt [1,0,2]. Ebenso, wenn wir

arr.slice(1)    // gibt [0,2] zurück

ausführen würden, würde [0,2] zurückgegeben, da 0 hier an Position 1 steht und alles danach. In Ihrem Fall haben Sie einen negativen Index, nämlich -1, als Beginn-Parameter übergeben, was einen Offset vom Ende der Sequenz angibt. Daher extrahiert slice(-1) in Ihrem Fall das letzte Array-Element in der Sequenz, also 2 (wie bereits in der obigen Demo gesehen).

Jetzt wollen wir über den end Parameter in der Syntax der slice() Methode sprechen. Er handelt sich erneut um einen nullbasierten Index, an dem die Extraktion aus einem Array endet. Angenommen, wir haben ein Array wie:-

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

und wir wollen nur die Elemente 2,5,3 im Array erhalten. Jetzt ist die Position von 2 vom Anfang der Sequenz aus betrachtet 2 und für das letzte Element 3 ist es 4. Wir müssen die Extraktion hier an Position 5 beenden, da wir das Element davor erhalten möchten. Also implementieren wir einfach die slice() Methode hier wie folgt

arr.slice(2, 5)    // gibt [2,5,3] zurück

In Ihrem Fall haben wir -1 als Endparameter implementiert, also sieht unser Code so aus

arr.slice(0, -1)   // gibt [1,0] zurück

Als negativer Index gibt end einen Offset vom Ende der Sequenz an. Daher extrahiert slice(0,-1) das erste Element bis zum vorletzten Element in der Sequenz. So erhalten wir das gewünschte Ergebnis. Wir können auch folgendes tun

arr.slice(0, 2)    // gibt [1,0] zurück

wir erhalten das gleiche Ergebnis. Aber ich habe hier -1 verwendet, da es auch für ein langes Array wie

[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 einfach das letzte Element entfernen möchten, möchten Sie nicht sitzen und die Position des letzten 9 hier berechnen und dann wie arr.slice(0, 22) machen. Sie können dann einfach die Logik des negativen Index hier implementieren und machen

arr.slice(0, -1) // dasselbe Ergebnis wie arr.slice(0, 22)

187voto

Lukas Liesis Punkte 20911

lernen durch Beispiel:

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

array_1.splice(-1,1)  // zurückgegeben --> [4]      array_1 = [1,2,3]
array_2.slice(0,-1);  // zurückgegeben --> [1,2,3]  array_2 = [1,2,3,4]
array_3.pop();        // zurückgegeben --> 4        array_3 = [1,2,3]
array_4.shift();      // zurückgegeben --> 1        array_4 = [2,3,4]

109voto

Bill Criswell Punkte 30542

Sie müssten dies tun, da slice das Original-Array nicht verändert.

arr = arr.slice(0, -1);

Wenn Sie das Original-Array ändern möchten, können Sie splice verwenden:

arr.splice(-1, 1);

oder pop:

arr.pop();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X