Détruire un (ou plusieurs) éléments d'un tableau Array en javascript
Il y a bien la méthode splice(), mais elle necessite de connaitre l'index de l'élément à supprimer.
Je veux supprimer une valeur précise d'un tableau qui est une simple liste.
EDIT version de @Zigazou dans les commentaires qui est bien meilleure:
Array.prototype.removeValue = function(obj){ var oldlength=this.length; for(i=this.length-1;i>=0;i--) { if(this[i]==obj) this.splice(i,1); } return oldlength-this.length; }
Fin de l'édit
Et comme dernièrement j'ai découvert les "prototypes" en javascript; voici le mien que j'ai eu besoin tout à l'heure.
Array.prototype.removeValue = function(obj){ var tempArray = new Array(); var counter=0; while (this.length>0) { var tempStr=this.shift(); if(tempStr!=obj){ tempArray.push(tempStr); }else{ counter++; } } while(tempArray.length>0) { this.push(tempArray.pop()); } return counter; }
Bon ok, je sais, le script parcourt deux fois le tableau... ça manque sûrement d'optimisation. Il est 23h30, je suis un peu crevé. N'hésitez pas à commenter si vous avez une meilleure méthode :p
Un prototype s'insère une fois au début du script javascript.
Pour le tester:
<script type="text/javascript"> Array.prototype.removeValue = function(obj){ var tempArray = new Array(); var counter=0; while (this.length>0) { var tempStr=this.shift(); if(tempStr!=obj){ tempArray.push(tempStr); }else{ counter++; } } while(tempArray.length>0) { this.push(tempArray.pop()); } return counter; } var fruits = ["Banana", "Orange", "Apple", "Mango" ,"Lemon"]; document.write("j'aime pas l'orange <br />"); fruits.removeValue("Orange"); document.write(fruits); </script>
Ça retournera:
j'aime pas l'orange Banana,Apple,Mango,Lemon
Commentaires
Hello Gnieark !
Est-ce que ça ne serait pas plus simple comme ça :
Array.prototype.removeValue = function(obj){
var oldlength=this.length;
for(i=this.length-1;i>=0;i--) {
if(this[i]==obj) this.splice(i,1);
}
return oldlength-this.length;
}
Merci Ziga! Billet édité. je sens qu'un jour je vais te réer des identifiants sur le blog du grouik ;)