web-dev-qa-db-fra.com

Comment supprimer un élément d'un tableau en JavaScript?

var arr = [1,2,3,5,6];

Je veux supprimer le 1er élément du tableau pour qu'il devienne:

var arr = [2,3,5,6];

Pour étendre cette question, si je veux supprimer le deuxième élément du tableau pour qu’il devienne:

var arr = [1,3,5,6];
320
user198729

Pour une solution plus flexible, utilisez la fonction splice() . Il vous permet de supprimer n’importe quel élément d’un tableau basé sur la valeur d’index:

var indexToRemove = 0;
var numberToRemove = 1;

arr.splice(indexToRemove, numberToRemove);
324
Gabriel McAdams

shift() est idéal pour votre situation. shift() supprime le premier élément d'un tableau et renvoie cet élément. Cette méthode change la longueur du tableau.

array = [1, 2, 3, 4, 5];

array.shift(); // 1

array // [2, 3, 4, 5]
655
JP Silvashy

La méthode Array.prototype.shift supprime le premier élément d'un tableau et le renvoie. Il modifie le tableau d'origine.

var a = [1,2,3]
// [1,2,3]
a.shift()
// 1
a
//[2,3]
57
p3drosola
arr.slice(begin[,end])

est non destructive, l'épissure et le décalage modifieront votre tableau d'origine

44
kiuma

A écrit un petit article sur l’insertion et la suppression d’éléments à des positions arbitraires dans des tableaux Javascript.

Voici le petit extrait permettant de supprimer un élément de n’importe quelle position. Cela étend la classe Array en Javascript et ajoute la méthode remove (index).

// Remove element at the given index
Array.prototype.remove = function(index) {
    this.splice(index, 1);
}

Donc, pour supprimer le premier élément de votre exemple, appelez arr.remove ():

var arr = [1,2,3,5,6];
arr.remove(0);

Pour enlever le deuxième article,

arr.remove(1);

Voici un petit article avec les méthodes insert et delete pour la classe Array.

En substance, ce n'est pas différent des autres réponses utilisant l'épissure, mais le nom splice n'est pas intuitif, et si vous avez cet appel dans toute votre application, cela rend simplement le code plus difficile à lire.

14
Anurag

Peut-être quelque chose comme ça:

arr=arr.slice(1);
13
ThatGuyYouKnow

D'autres réponses sont géniales, je voulais juste ajouter une solution alternative avec ES6 Fonction de tableau: filter.

filter() crée un nouveau tableau avec des éléments appartenant à un critère donné d'un tableau existant.

Ainsi, vous pouvez facilement l'utiliser pour supprimer des éléments qui ne répondent pas aux critères. Les avantages de cette fonction sont que vous pouvez l'utiliser sur des tableaux complexes, pas seulement des chaînes et des nombres.

Quelques exemples :

Supprimer le premier élément:

// Not very useful but it works
function removeFirst(element, index) {
  return index > 0;
}
var arr = [1,2,3,5,6].filter(removeFirst); // [2,3,4,5,6]

Supprimer le deuxième élément:

function removeSecond(element, index) {
  return index != 1;
}
var arr = [1,2,3,5,6].filter(removeSecond); // [1,3,4,5,6]

Supprimer élément impair:

function removeOdd(element, index) {
  return !(element % 2);
}
var arr = [1,2,3,5,6].filter(removeOdd); [2,4,6]

Supprimer les articles non en stock

const inventory = [
  {name: 'Apple', qty: 2},
  {name: 'Banana', qty: 0},
  {name: 'Orange', qty: 5}
];

const res = inventory.find( product => product.qty > 0);


5
Martin Choraine

Vous pouvez utiliser la fonction ES6 Destructuring Assignment avec un opérateur de repos. Une virgule indique où vous voulez supprimer l'élément et le reste (... arr) opérateur pour vous donner les éléments restants du tableau.

const source = [1,2,3,5,6];

function removeFirst(list) {
   var  [, ...arr] = list;
   return arr;
}
const arr = removeFirst(source);
console.log(arr); // [2, 3, 5, 6]
console.log(source); // [1, 2, 3, 5, 6]
1
Brendan