Recherche de matrice Javascript et suppression de chaîne?

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 puis-je accomplir cela?

Bouclez la liste dans l'ordre inverse et utilisez la méthode .splice .

 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 ignorerez les éléments.

Lorsque seule la première occurrence doit être supprimée, les éléments suivants fonctionneront également:

 var index = array.indexOf(search_term); // <-- Not supported in <IE9 if (index !== -1) { array.splice(index, 1); } 

DEMO

Vous devez trouver l'emplacement de ce que vous recherchez avec .indexOf() puis l'enlever 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)​​​​;  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.

Je suis en train de mettre à jour ce fil avec une solution 1 ligne plus récente:

 let arr = ['A', 'B', 'C']; let el = 'B'; arr = arr.filter(e => e !== el); 

L'idée consiste essentiellement à filtrer le tableau en sélectionnant tous les éléments différents de l'élément que vous souhaitez supprimer.

Remarque: supprime toutes les occurrences.

utilisation:

 array.splice(1, 1); 

Cela supprime le 1er élément du tableau.

Vous pouvez le résoudre en ajoutant une fonction de suppression au prototype de tableau.

 Array.prototype.remove = function(elem, all) { for (var i=this.length-1; i>=0; i--) { if (this[i] === elem) { this.splice(i, 1); if(!all) break; } } return this; }; 

Usage:

 var myArray = ['A', 'B', 'C', 'D', 'A'] myArray.remove('A'); => ["A", "B", "C", "D"] myArray.remove('A', true); => ["B", "C", "D"] 

Mais soyez prudent pour étendre les prototypes natifs pourrait être un anti-modèle!

Vous devez écrire votre propre suppression. Vous pouvez faire une boucle sur le tableau, saisir l'index de l'élément que vous souhaitez supprimer et utiliser l' splice pour l'enlever.

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.

Utiliser 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