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 :

join avec incrément


Sujet :

JavaScript

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut join avec incrément
    Je cherche à réaliser un join avec incrément le plus directement possible

    l'idée de base est de partir d'un array et d'aboutir à une chaine mais avec un séparateur modifié pour chaque jointure
    Bien entendu on peut boucler sur l'array, mais je cherchais à faire plus direct

    Dans l'idée un truc comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sep="0"
    function bar(){
    return sep++
    }
    chaine="erz,zer,zerz,er,zer,zerzert,reter,yte,zt,e,tzthdfhb,dfgh,sqdf";
    tab=chaine.split(',')
    res=tab.join(bar())
    alert (res)
    Mais cela ne fonctionne pas
    En fait il faudrait pouvoir faire la jointure avec l'indince de l'array ...

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Salut SpaceFrog,

    Je pense que ceci devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Array.prototype.join = function(separator){
        var s, item, sep;
        s = '';
        for(var i = 0; i < this.length; i++){
            item = this[i] + '';
            sep = !separator ? i : separator;
            s += item + sep;
        }
        return s;
    }
    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var chaine = 'voiture,bateau,avion';
    var tab_chaine = chaine.split(',');
     
    alert(tab_chaine.join());
    alert(tab_chaine.join(','));
    Code testé et fonctionnel.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    oui, mon but était en fait de ne pas redéfinir le join et de s'affranchir d'une boucle de concaténation

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var chaine="erz,zer,zerz,er,zer,zerzert,reter,yte,zt,e,tzthdfhb,dfgh,sqdf";
    var tab = chaine.split(',');
     
    var res = tab.map(function(item, i, obj){
        return (item + i);
    });
     
    alert(res.join(""));

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    map ?

    map n'existe pas en js,j'ai d'ailleurs déja proposé un prototype il y a quelque temps sur ce forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function foo(bar){
    return "done "+bar
    }
     
    Array.prototype.array_map=function(func){
    al=this.length
    for( i=0;i<al;i++){
    this[i]=func(this[i])
    }
    }
     
    testarray=new Array(1,2,4,5,6,8,7)
    testarray.array_map(foo)
    alert(testarray)
    Mais encore une fois mon objectif est de me passer de prototype ...

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut SpaceFrog,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var sep=0;
    function bar(){
      return sep++;
    }
    chaine="erz,zer,zerz,er,zer,zerzert,reter,yte,zt,e,tzthdfhb,dfgh,sqdf";
     
    res=chaine.replace(/,/g , bar); 
     
    alert (res);
    ERE

  7. #7
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Si, map existe en javascript 1.6. Malheureusement, je viens de tester, IE8 ne le prend toujours pas en compte.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    ???
    curieux j'aurais pourtant juré avoir tésté ça ...
    Merci ERE ça marche nickel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    var mylink="http://www.monsite.com/#/picbook/23/chapter/2/paragraph/4";
    var reg=/.*#(.*)/g;
     
    var sep=1;
    function bar(){
    return "&part"+ sep++ +"=";
    }
     
    function modif(args){
    var texte=args[1]
    var modtexte= texte.replace(/\//g,bar);
    return modtexte;
    }
     
     
    var result= mylink.replace(reg,function(){ return modif(arguments)} ) 
     
    alert (result);

  9. #9
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    map ?

    map n'existe pas en js,j'ai d'ailleurs déja proposé un prototype il y a quelque temps sur ce forum
    ...
    Voir : https://developer.mozilla.org/en/Cor...ects/Array/map

    C'est du JavaScript 1.6
    Cela fonctionne parfaitement sous Firefox et Chrome.

    Mais effectivement IE ne connait pas, même dans sa version 8.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var chaine="erz,zer,zerz,er,zer,zerzert,reter,yte,zt,e,tzthdfhb,dfgh,sqdf";
    var tab = chaine.split(',');
    var limite = tab.length-1;
     
    var res = tab.map(function(item, i, obj){
        if (i < limite) {
            return (item + i);
        } else {
            return item;
        }
    });
     
    alert(res.join(""));

Discussions similaires

  1. JOIN avec plusieurs Items dirigeant vers le même item ?
    Par Fred_76 dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/07/2006, 12h08
  2. [VBA-E] Calcul avec incrémentation
    Par dahu29 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/03/2006, 09h36
  3. Variante de TUpDown avec incrément réel
    Par Bernard Grosdoy dans le forum Composants VCL
    Réponses: 6
    Dernier message: 20/10/2004, 16h40
  4. Update ou insert avec incrément d'un champ
    Par dany13 dans le forum ASP
    Réponses: 5
    Dernier message: 15/10/2004, 12h53
  5. LEFT JOIN avec Oracle 8i ne va pas... doit utiliser (+)
    Par loikiloik dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/04/2004, 16h38

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