web-dev-qa-db-fra.com

Supprimer le dernier élément du tableau

J'ai le tableau suivant.

var arr = [1,0,2];

Je voudrais supprimer le dernier élément, à savoir 2.

J'ai utilisé arr.slice(-1); mais cela ne supprime pas la valeur.

307
Prithviraj Mitra

Utilisez 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"]

Documentation de Array.prototype.pop sur MDN

455
Stuart Kershaw

Vous pouvez le faire en utilisant .slice() comme:

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

Voici une démo:

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>

au lieu de faire:

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

Voici une démo:

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>

Explication: -

Maintenant, la syntaxe de base de Array.prototype.slice() ou en abrégé slice() est la suivante:

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

Ici, 

le paramètre begin est un index de base zéro auquel l'extraction d'un tableau commence. Donc, disons sur la base de l'exemple ci-dessus si nous faisons quelque chose comme

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

il renverrait tous les éléments du tableau depuis le début de la séquence à partir de la position 0, à savoir [1,0,2]. De même, si nous faisons

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

il renverrait [0,2] puisque 0 est à la position 1 ici et tout après. Maintenant, dans votre cas, vous avez passé un index négatif, c’est-à-dire -1 comme paramètre de début, qui indique un décalage par rapport à la fin de la séquence. Ainsi, slice(-1) dans votre cas extrait le dernier élément de tableau de la séquence, à savoir 2 (comme nous l'avons déjà vu dans la démo ci-dessus).

Parlons maintenant du paramètre end dans la syntaxe de la méthode slice() ici. Il s’agit là encore d’un index de base zéro auquel se termine l’extraction d’un tableau. Alors, disons que nous avons un tableau comme: -

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

et nous voulons obtenir uniquement les éléments 2,5,3 dans le tableau. Maintenant, la position de 2 à partir du début de la séquence est 2 et pour le dernier élément 3, il s'agit de 4. Nous devrons mettre fin à l'extraction ici la position 5, car nous devons obtenir l'élément avant cette position. Donc, nous allons simplement implémenter la méthode slice() ici comme

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

Dans votre cas, nous avons implémenté -1 en tant que paramètre de fin. Notre code ressemble donc à

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

end indique un décalage par rapport à la fin de la séquence. Ainsi, slice(0,-1) extrait le premier élément de l'avant-dernier élément de la séquence. Nous obtenons donc le résultat souhaité. On peut aussi faire comme

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

nous aurons le même résultat. Mais j’ai utilisé -1 ici car il est plus facile à implémenter, même pour un tableau long comme

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

Si vous voulez seulement supprimer le dernier élément, vous ne voulez pas vous asseoir et calculer la position des 9 derniers ici et faire comme arr.slice(0, 22). Vous pouvez alors simplement implémenter la logique d'index négatif ici et faire 

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

J'espère que ça aide!

194
palaѕн

apprendre par exemple:

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

Vous devez le faire car slice ne modifie pas le tableau d'origine. 

arr = arr.slice(-1);

Si vous souhaitez modifier le tableau d'origine, vous pouvez utiliser splice:

arr.splice(-1, 1);

ou pop:

arr.pop();
31
Bill Criswell

Il y a une fonction pour ça, explication ici :

arr.pop();
17
JoDev

Vous pouvez simplement utiliser, arr.pop()

Cela supprime la dernière entrée du tableau.

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

Je considérerais que .pop() est la solution la plus "correcte", mais cela peut parfois ne pas fonctionner car vous devez utiliser un tableau sans le dernier élément juste là ...

Dans ce cas, vous pouvez utiliser les options suivantes 

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

tandis que .pop() renverrait ceci (4):

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

ce qui pourrait ne pas être souhaitable ...

J'espère que cela vous fait gagner du temps.

7
Matas Vaitkevicius

Cette méthode est plus utile pour supprimer et stocker le dernier élément d’un fichier tableau.

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.

Maintenant, les résultats sont:

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

arr.slice(-1) retournera un copy du dernier élément du tableau, mais laissera le tableau original non modifié.

Pour supprimer les derniers éléments n d'un tableau, utilisez arr.splice(-n) (notez le "p" dans "splice"). La valeur de retour sera un nouveau tableau contenant les éléments supprimés.

Plus simple encore, pour n == 1, utilisez val = arr.pop()

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

// supprime le dernier élément// besoin de vérifier si arr.length> 0

4
Nirav Shah

Il est à noter que slice renverra à la fois un nouveau tableau, alors que .pop() et .splice() muteront le existant tableau.

Si vous aimez gérer des collections de données avec un style de commande chaîné, vous voudrez vraiment vous en tenir à slice pour quelque chose comme ceci.

Par exemple:

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

Cela peut nécessiter beaucoup plus de confusion et de gestion variable que de faire le même genre de choses avec "pop", car contrairement à map, filter, etc., vous ne récupérez pas un nouveau tableau.

C'est le même genre de chose avec Push, qui ajoute un élément à la fin d'un tableau. Vous pourriez être mieux avec concat puisque cela vous permet de continuer le flux.

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) - Cette solution sonne bien. Mais ceci combien de fois ne fonctionnera que pour l’indice de tableau positif. Pour supprimer les deux derniers éléments ou les trois éléments, utilisez l'index lui-même. 

Par exemple, splice (-2) pour supprimer les deux derniers éléments. splice (-3) pour supprimer les trois derniers éléments.

3
Parthyz

dites que vous avez var arr = [1,0,2]

arr.splice(-1,1) vous retournera array [1,0]; tandis que arr.slice(-1,1) vous retournera array [2];

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

stack.reverse().shift();

stack.Push(0);

La sortie sera: Tableau [0,1,2,3,4,5] ..__ Ceci vous permettra de conserver la même quantité d’éléments de tableau que lorsque vous insérez une nouvelle valeur 

1
Blackspade

Avec Lodash, vous pouvez utiliser dropRight , si vous ne voulez pas savoir quels éléments ont été supprimés:

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

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

C'est un bon moyen de supprimer le dernier élément:

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

Détail de l'épissure comme suit:

splice (startIndex, nombre de splice)

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