1308 votes

Tableau JavaScript Supprimer Des Éléments

Quelle est la différence entre l'utilisation de l' delete de l'opérateur sur l'élément du tableau, par opposition à l'utilisation de l' Array.splice méthode? Par exemple:

myArray = ['a', 'b', 'c', 'd'];

delete myArray[1];
//  or
myArray.splice (1, 1);

Pourquoi même avoir la jonction de la méthode si je peux supprimer les éléments du tableau comme je peux avec des objets?

1668voto

Andy Hume Points 15186

Supprimer dans ce cas ne l'élément indéfini:

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> delete myArray[0]
  true
> myArray
  [undefined, "b", "c", "d"]

Splice en fait supprime l'élément de la matrice:

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> myArray.splice(0, 2)
  ["a", "b"]
> myArray
  ["c", "d"]

337voto

Mohsen Points 16856

Tableau.Méthode remove()

John Resig, le créateur de jQuery créé un très maniable Array.remove méthode que j'ai toujours l'utiliser dans mes projets.

// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

et voici quelques exemples de la façon dont il pourrait être utilisé:

// Remove the second item from the array
array.remove(1);
// Remove the second-to-last item from the array
array.remove(-2);
// Remove the second and third items from the array
array.remove(1,2);
// Remove the last and second-to-last items from the array
array.remove(-2,-1);

John le site web de

102voto

andynormancx Points 6026

Parce que supprimer supprime uniquement l'objet de l'élément dans le tableau, la longueur du tableau ne change pas. Splice supprime l'objet et raccourcit le tableau.

Le code suivant affiche "a", "b", "undefined", "d"

myArray = ['a', 'b', 'c', 'd']; delete myArray[2];

for (var count = 0; count < myArray.length; count++) {
    alert(myArray[count]);
}

Alors que cette affiche "a", "b", "d"

myArray = ['a', 'b', 'c', 'd']; myArray.splice(2,1);

for (var count = 0; count < myArray.length; count++) {
    alert(myArray[count]);
}

65voto

Troy Harvey Points 613

Je suis tombé sur cette question, en essayant de comprendre comment faire pour supprimer toutes les occurrences d'un élément d'un Tableau. Voici une comparaison des splice et delete pour la suppression de tous les 'c' de la items Tableau.

var items = ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'];

while (items.indexOf('c') !== -1) {
  items.splice(items.indexOf('c'), 1);
}

console.log(items); // ["a", "b", "d", "a", "b", "d"]

items = ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'];

while (items.indexOf('c') !== -1) {
  delete items[items.indexOf('c')];
}

console.log(items); // ["a", "b", undefined, "d", "a", "b", undefined, "d"]
​

14voto

f3lix Points 13634

De Base de JavaScript 1.5 Référence > les Opérateurs > Opérateurs Spéciaux > Opérateur d'effacement :

Lorsque vous supprimez un élément de tableau, l' longueur du tableau n'est pas affectée. Pour exemple, si vous supprimez un[3], [4] est encore une[4] et[3] n'est pas défini. Cette tient, même si vous supprimez le dernier élément du tableau (supprimer [une.longueur-1]).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X