J'ai:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
Je veux pouvoir faire quelque chose comme:
array.remove("B");
mais il n'y a pas de fonction de suppression. Comment faire cela?
J'ai:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
Je veux pouvoir faire quelque chose comme:
array.remove("B");
mais il n'y a pas de fonction de suppression. Comment faire cela?
Réponses:
Je mets à jour ce fil avec une solution 1 ligne plus récente:
let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']
L'idée est essentiellement de filtrer le tableau en sélectionnant tous les éléments différents de l'élément que vous souhaitez supprimer.
Remarque: supprimera toutes les occurrences.
ÉDITER:
Si vous souhaitez supprimer uniquement la première occurrence:
t = ['A', 'B', 'C', 'B'];
t.splice(t.indexOf('B'), 1); // will return ['B'] and t is now equal to ['A', 'C', 'B']
Parcourez la liste dans l'ordre inverse et utilisez la .splice
méthode.
var array = ['A', 'B', 'C']; // Test
var search_term = 'B';
for (var i=array.length-1; i>=0; i--) {
if (array[i] === search_term) {
array.splice(i, 1);
// break; //<-- Uncomment if only the first term has to be removed
}
}
L'ordre inverse est important lorsque toutes les occurrences du terme de recherche doivent être supprimées. Sinon, le compteur augmentera et vous sauterez des éléments.
Lorsque seule la première occurrence doit être supprimée, les éléments suivants fonctionnent également:
var index = array.indexOf(search_term); // <-- Not supported in <IE9
if (index !== -1) {
array.splice(index, 1);
}
0
n'est pas automatiquement plus rapide comme c'est le cas, disons, C. Tant que vous mettez en cache la limite, bien sûr, ce qui compliquerait les choses si vous continuez après le premier match (mais pas si vous vous arrêtez dessus).
Liste des doublures
Résolvons ce problème pour ce tableau:
var array = ['A', 'B', 'C'];
1. Ne supprimez que le premier: Utilisez Si vous êtes sûr que l'élément existe
array.splice(array.indexOf('B'), 1);
2. Ne supprimez que le dernier: Utilisez Si vous êtes sûr que l'élément existe
array.splice(array.lastIndexOf('B'), 1);
3. Supprimez toutes les occurrences:
array = array.filter(v => v !== 'B');
Vous devez trouver l'emplacement de ce que vous recherchez, .indexOf()
puis le supprimer avec.splice()
function remove(arr, what) {
var found = arr.indexOf(what);
while (found !== -1) {
arr.splice(found, 1);
found = arr.indexOf(what);
}
}
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
remove(array, 'B');
alert(array);
Cela prendra en charge toutes les occurrences.
Uncaught ReferenceError: array is not defined
. Qu'est-ce qui ne va pas?
.indexOf()
un peu plus. Si vous passez found
comme deuxième argument à l' .indexOf()
appel dans la boucle while , les éléments du tableau qui ont déjà été vérifiés et qui ont fini par ne pas être égaux ne sont pas vérifiés à nouveau: found = arr.indexOf(what, found);
Simplement
array.splice(array.indexOf(item), 1);
-1
si rien n'est trouvé et oups, splice supprimera 1 élément de la fin du tableau
Solution simple (ES6)
Si vous n'avez pas d'élément en double
Array.prototype.remove = function(elem) {
var indexElement = this.findIndex(el => el === elem);
if (indexElement != -1)
this.splice(indexElement, 1);
return this;
};
Vous devez écrire votre propre suppression. Vous pouvez parcourir le tableau, saisir l'index de l'élément que vous souhaitez supprimer et l'utiliser splice
pour le supprimer.
Vous pouvez également créer un nouveau tableau, faire une boucle sur le tableau actuel et si l'objet actuel ne correspond pas à ce que vous souhaitez supprimer, placez-le dans un nouveau tableau.
utilisation:
array.splice(2, 1);
Cela supprime un élément du tableau, en commençant à l'index 2 (3e élément)
array.splice(2,1)
qui supprime 1 élément à l'index 2 du tableau. consultez https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice pour plus de détails
utilisez array.splice
/*array.splice(index , howMany[, element1[, ...[, elementN]]])
array.splice(index) // SpiderMonkey/Firefox extension*/
array.splice(1,1)
Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
array
et splice
doit être un point.
.indexOf()
et.splice()
devrait faire l'affaire. Ou peut - être, au contraire,.filter()
.