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.
Utilisez splice (index, howmany)
arr.splice(-1,1)
let fruit = ['Apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();
console.log(popped); // "tomato"
console.log(fruit); // ["Apple", "orange", "banana"]
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>
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!
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]
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();
Il y a une fonction pour ça, explication ici :
arr.pop();
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
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.
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
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()
var arr = [1,0,2];
arr.length--;
// supprime le dernier élément// besoin de vérifier si arr.length> 0
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
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.
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];
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
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]
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)
var a = [1,2,3,4,5,6];
console.log(a.reverse().slice(1).reverse());
//Array(5) [ 1, 2, 3, 4, 5 ]