L' deleteopérateur est utilisé pour supprimer les propriétés des objets.
const obj = { foo: "bar" }
delete obj.foo
obj.hasOwnProperty("foo") // false
Notez que, pour les tableaux, ce n'est pas la même chose que de supprimer un élément . Pour supprimer un élément d'un tableau, utilisez Array#spliceou Array#pop. Par exemple:
arr // [0, 1, 2, 3, 4]
arr.splice(3,1); // 3
arr // [0, 1, 2, 4]
Détails
deleteen JavaScript a une fonction différente de celle du mot-clé en C et C ++: il ne libère pas directement la mémoire. Au lieu de cela, son seul but est de supprimer les propriétés des objets.
Pour les tableaux, la suppression d'une propriété correspondant à un index crée un tableau clairsemé (c'est-à-dire un tableau contenant un "trou"). La plupart des navigateurs représentent ces indices de tableau manquants comme «vides».
var array = [0, 1, 2, 3]
delete array[2] // [0, 1, empty, 3]
Notez que deletene se déplace pas array[3]dans array[2].
Différentes fonctions intégrées en JavaScript gèrent différemment les tableaux clairsemés.
for...in sautera complètement l'index vide.
Une forboucle traditionnelle renverra undefinedla valeur à l'index.
Toute méthode utilisant Symbol.iteratorretournera undefinedla valeur à l'index.
forEach, mapEt reducesautera les index manquant.
Ainsi, l' deleteopérateur ne doit pas être utilisé dans le cas d'utilisation courant de suppression d'éléments d'un tableau. Les tableaux ont des méthodes dédiées pour supprimer des éléments et réallouer la mémoire: Array#splice()et Array#pop.
Array # splice (start [, deleteCount [, item1 [, item2 [, ...]]]])
Array#splicemute le tableau et renvoie tous les index supprimés. deleteCountles éléments sont supprimés de l'index startet item1, item2... itemNsont insérés dans le tableau à partir de l'index start. Si deleteCountest omis, les éléments de startIndex sont supprimés à la fin du tableau.
let a = [0,1,2,3,4]
a.splice(2,2) // returns the removed elements [2,3]
// ...and `a` is now [0,1,4]
Il y a aussi un nom similaire, mais différente, fonction sur Array.prototype: Array#slice.
Array # slice ([début [, fin]])
Array#sliceest non destructif et renvoie un nouveau tableau contenant les indices indiqués de startà end. Si elle endn'est pas spécifiée, elle prend par défaut la fin du tableau. Si endest positif, il spécifie l' index non inclus de base zéro sur lequel s'arrêter. S'il endest négatif, il spécifie l'index sur lequel s'arrêter en comptant à partir de la fin du tableau (par exemple, -1 omettra l'index final). Si end <= start, le résultat est un tableau vide.
let a = [0,1,2,3,4]
let slices = [
a.slice(0,2),
a.slice(2,2),
a.slice(2,3),
a.slice(2,5) ]
// a [0,1,2,3,4]
// slices[0] [0 1]- - -
// slices[1] - - - - -
// slices[2] - -[3]- -
// slices[3] - -[2 4 5]
Array # pop
Array#popsupprime le dernier élément d'un tableau et renvoie cet élément. Cette opération modifie la longueur du tableau.