Bonjour à tous,
Je viens de me prendre la tête un bon moment sur ce problème aussi et je viens de me rendre compte d'un truc :
Lorsque l'on code ceci :
var tab = new Array();
tab["popo"] = 1;
tab["tutu"] = 56;
tab["tata"] = 57;
tab["titi"] = 58;
En réalité,
on ajoute aucun élément dans la liste car
alert(tab.length); //affiche 0
En réalité,
on ajoute des paramètres à cette liste. On peut d'ailleurs récupérer ces valeurs de la manière suivante :
alert(tab.tutu); //affiche 56
Et ces paramètres sont effaçable par la commande "delete"
delete(tab["tutu"]);
for(var i in tab){
document.write('tab["'+i+'"] = '+tab[i]+';<br>');
}
//affiche
//tab["popo"] = 1;
//tab["tata"] = 57;
//tab["titi"] = 58;En revenche, si on utilise les listes "normalement" (sans utiliser d'indices textuels), on peut utiliser la fonction suivante :
remove=function(){
var _temp=arguments[0].splice(0,arguments[1]);
arguments[0].shift();
arguments[0].unshift(_temp);
};
var tab=new Array(1,56,57,58);
alert(tab); //affiche 1,56,57,58
remove(tab,1);
alert(tab); //affiche 1,57,58Alors qu'un delete ne supprime pas réellement l'élément :
var tab=new Array(1,56,57,58);
alert(tab); //affiche 1,56,57,58
delete(tab[1]);
alert(tab); //affiche 1,,57,58
Voila voila.
J'espère que ca en aidera quelques uns.
Bon code ...