IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

split ou for (var i in array)


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Ao�t 2012
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Ao�t 2012
    Messages : 145
    Par d�faut split ou for (var i in array)
    Bonjour,

    La console m'indique une erreur et je n'arrive � comprendre ce qui ne va pas :

    Citation Envoy� par Console
    Uncaught TypeError: Object function (){
    return lower;
    } has no method 'split'
    La ligne d'erreur fait r�f�rence � :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var groupe_valeur=tableau_stockage[i].split('&chap&');
    Dans $(stockage_copier), j'ai ceci : essai titre&chap&9| Nouveau article&chap&9-1|.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var tableau_stockage=new Array();						
    var tableau_stockage=$(stockage_copier).get('value').split('|');
    tableau_stockage.splice(tableau_stockage.length-1); // supp element vide
    	for (var i in tableau_stockage)
    		{
    			var groupe_valeur=new Array();
    			var groupe_valeur=tableau_stockage[i].split('&chap&');
    			for (var a in groupe_valeur)
    			{
    			}
     
    			}
    Lorsque je mets [codeinline]console.log(groupe_valeur[a]);[codeinline] dans la boucle [codeinline]for (var a in groupe_valeur)[codeinline], la console me donne ceci :

    Citation Envoy� par Console
    essai titre
    9
    function (){
    return lower;
    } indexd.php:593
    [undefined � 1] indexd.php:593
    function (fn, bind){
    Array.forEach(this, fn, bind);
    return this;
    } indexd.php:593
    function (){
    var i = this.length, clone = new Array(i);
    while (i--) clone[i] = cloneOf(this[i]);
    return clone;
    }
    ...
    Elle me donne bien les deux premi�res valeurs souhait�es � savoir "essai titre" et "9" et plante apr�s !

    Merci pour votre aide,
    cedric

  2. #2
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par d�faut
    En tout cas,
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var tableau_stockage = 'essai titre&chap&9| Nouveau article&chap&9-1|'.split('|');
     
    tableau_stockage.splice(tableau_stockage.length-1); // supp element vide
     
    for (var i in tableau_stockage) {
      var groupe_valeur = tableau_stockage[i].split('&chap&');
      for (var a in groupe_valeur){
        console.log(groupe_valeur[a])
      }
    }
    retourne bien :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    essai titre
    9
     Nouveau article
    9-1
    Es-tu s�r que $(stockage_copier).get('value') contient bien "essai titre&chap&9| Nouveau article&chap&9-1|" ??

  3. #3
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Ao�t 2012
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Ao�t 2012
    Messages : 145
    Par d�faut
    oui, � 100%,
    for (var i in tableau_stockage) peut sur s'appliquer sur un Array ou obligatoirement sur un Object ?
    car split transf�re les valeurs vers un tableau et non en objet m�me si on le d�fini comme objet

    je viens de faire un petit test avec Array() et Object()
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var essai=new Object();	
    essai[0]="essai 1";
    essai[1]="essai 2";
    console.log(essai);
    for (var i in essai)
    {
    	console.log(essai[i]);
    }
    avec Object() => aucun probl�me, et avec Array il affiche essai 1 et essai 2 suivi du m�me message d'erreur � savoir :
    function (){
    return lower;
    } indexd.php:590
    [undefined � 1] indexd.php:590
    function (fn, bind){
    Array.forEach(this, fn, bind);
    return this;
    }
    ...

  4. #4
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par d�faut
    A mon avis tu ne nous montres pas tout le code ..

    �a s'applique aussi bien sur un Object qu'un Array
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    for (variable in [Object | Array]) {
      statements 
    }
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    var essai = {};	
    essai[0]  = "essai 1";
    essai[1]  = "essai 2";
    for (var i in essai)
      console.log(essai[i]);
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    var essai = [];	
    essai.push("essai 1");
    essai.push("essai 2");
    for (var i in essai)
      console.log(essai[i]);
    ... retourne bel et bien :

  5. #5
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Ao�t 2012
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Ao�t 2012
    Messages : 145
    Par d�faut
    vous pouvez retrouver mon code avec votre exemple ici http://module.construction-materiaux.com/indexd.php

    Pour activer la fonction, faite un clique droite sur l'un des titres du menu � gauche puis copier l'article
    enfin de nouveau clique droite sur l'un des titres du menu et s�lectionner coller

  6. #6
    Membre exp�riment�

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Par d�faut
    on ne parcoure pas un array JS avec un for in, car sinon on va se retrouver avec toutes les propri�t�s/methodes de Array.

    Donc d�j� un array se parcours avec for.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    for (var i=0; i<essai.length; i++)
    {
    	console.log(essai[i]);
    }

    Ensuite, si c'est une map/object (equivalent en php est array associatif), l� oui tu parcours avec un for in, mais attention, il faut faire attention � ne pas parcourir les methodes/propri�t�s rajout�s sur Object.prototype. Pour cela on utilisera hasOwnProperty

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    var map = {"plop":"valeur1", "foo":"valeur2", "bar":"valeur3"};
    for (var i in map) {
       if (map.hasOwnProperty(i)) {
          console.log(map[i]);
       } 
    }

  7. #7
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Je vais vous mettre le doigt sur le probl�me :
    Code console : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    >>> Array.prototype.zob = 42
    42
    >>> for (var i in ["a", "b", "c"]) console.log(i)
    0
    1
    2
    zob

    il ne faut pas utiliser for (in) pour boucler sur un tableau !

    Edit: arf, grill� par Arnogues

    On peut tenter de contourner le probl�me avec hasOwnProperty. Mais c'est gu�rir plut�t que pr�venir.
    J'ai retrouv� une vieille conversation qui parle de �a.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  8. #8
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par d�faut
    Watilin et arnogues : j'en suis bien conscient, mais l� n'�tait pas la question
    D'ailleurs, pour parcourir un tableau js, j'utilise :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    for (var i = 0, row; (row= tabs[i]) != undefined; i++)
      doSmthg(row);
    drick35 : Tu as mal recopi� mon code, tu m�langes Array et Object :

    Array:
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    var essai = [];	
    essai.push("essai 1");
    essai.push("essai 2");
     
    // OU directement :
    var essai = ["essai 1", "essai 2"];

    Object :
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var essai = {};	
    essai["att1"] = "essai1";
    essai["att2"] = "essai2";
     
    // OU :
    var essai = {};
    essai.att1 = "essai1";
    essai.att2 = "essai2";
     
    // OU :
    var essai = {att1: "essai1", att2: "essai2"};

    La meilleure est la derni�re non ? (Question pour les autres)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [XL-2007] Fonction Split et For
    Par Guillaumus dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 27/07/2012, 18h51
  2. [Prototype] Arrays et les For..in
    Par lvr dans le forum Biblioth�ques & Frameworks
    R�ponses: 4
    Dernier message: 14/10/2007, 23h43
  3. array for noob
    Par xian21 dans le forum ASP.NET
    R�ponses: 2
    Dernier message: 27/09/2007, 11h50
  4. array for noob (je parle de moi ^^)
    Par xian21 dans le forum C#
    R�ponses: 15
    Dernier message: 26/09/2007, 14h06
  5. Probl�me+for+array+get
    Par xmane85 dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 15/05/2006, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo