La collection arguments n'est pas un Array() !

cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007 - 16 nov. 2006 à 15:21
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007 - 17 nov. 2006 à 09:24
Bonjour




Je viens de me rendre compte (non sans effroi, mais en tout cas avec stupeur) que l'objet (ou la collection) arguments n'était pas de type Array, malgré les apparences. Du coup, impossible de lui appliquer la méthode join(). Quelqu'un aurait-il un équivalent de cette méthode ?
(évidemment, sans passer par une boucle du genre for (var i=0; i

3 réponses

nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
16 nov. 2006 à 20:39
Bonjour,

bizarre car dans la doc c'est référencé comme Array.

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
rubiks10 Messages postés 224 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 6 juin 2007 3
16 nov. 2006 à 23:56
Salut oui moi j'ai résolu le problème depuis longtemps au moyen d'une petite fonction perso que j'inclut dans tous mes projets JavaScript.
Car il n'y a pas que arguments qui est une sorte d'array le résultat d'un getElementsTagName également etc...

Voila ma petite fonction perso que tu peux inclure et utiliser ensuite
function toArray(collection) {    var array [], i 0;
    while(collection[i])  array.push(collection[i++])
    return array;
}

Puis maintenant si tu veux faire ton join tu n'as plus qu'à faire : toArray(arguments).join()

voilà bonne prog
@+

-- The Rubik's Man --
0
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
17 nov. 2006 à 09:24
Bonjour




Nickadele --> Oui, j'ai toujours pensé que c'était un Array, jusqu'au moment où ...! et toutes les docs le donne pour Array, mais si on fait : alert(typeof(arguments)), il retourne bien  Object

Rubiks10 --> j'ai fait à peu près la même chose :
Object.prototype.toArray=function()
    {
    if (this.length)
        {
        var args=this;
        var bid=new Array();
        for (var i=0; i
0
Rejoignez-nous