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 :

Résultat aberrant de la fonction split : lettre par lettre


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte sys d'info géographique
    Inscrit en
    Juin 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte sys d'info géographique
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2011
    Messages : 64
    Points : 30
    Points
    30
    Par défaut Résultat aberrant de la fonction split : lettre par lettre
    Bonjour, soit un array javascript issu d'une requête Ajax PHP se présentant comme suit (ligne 5 du code, console log). ¤ est un caractère qui doit servir à diviser chaque partie de l'array, à la suite et faire récuperer chaque nom à la suite.

    Array(11) [ "Hôtel Beauvoir¤node/59719195¤hotel¤¤", "¤node/60206524¤hotel¤¤", "Hôtel des Mines¤node/60272387¤hotel¤¤", "Foyer International des Étudiantes¤node/60541641¤hostel¤¤", "Villa Louis Pasteur¤node/107944963¤guest_house¤¤", "Observatoire Luxembourg¤node/320575927¤hotel¤¤", "Hôtel Gay-Lussac¤node/734695116¤hotel¤¤", "Hôtel André Latin¤node/1684818338¤hotel¤¤", "Relais Saint-Jacques¤node/1685650818¤hotel¤¤", "Le Seven¤node/
    1705420536¤hotel¤¤", … ]

    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 outputhebergement;
        var arrayhebergement = sentpghebergement.split(",");
        console.log(arrayhebergement);
            let i = 0;
        do {
     
    var arrayinside = sentpghebergement[i].split('¤');
    console.log(arrayinside);
     
    outputhebergement = outputhebergement + '<p>' + arrayinside[0] + ' </p>';
            i++;
        } while (i < arrayhebergement.length);
    Le console.log suivant, en ligne 10, ne coupe pas selon le caractère défini mais découpe tous les caractères un par un ! (selon la capture qui suit où j'ai testé un autre caractère de césure : ~).

    Comment faire ? je voudrais séparer chaque nom par des <p></p> et pour l'instant, j'ignore les codes et autre choses contenues dans l'array.

    Nom : Copie d'écran_20240710_201905.png
Affichages : 134
Taille : 97,7 Ko

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 646
    Points
    16 646
    Par défaut
    Salut
    Code HTML : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <!DOCTYPE html>
    <html lang="fr">
    	<!-- Commentaires HTML -->
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    		<meta name="viewport" content="width=device-width, initial-scale=1.0">
    		<title>Ici le titre dans l'onglet du navigateur</title>
    		<style>
                            /* ************************************ Commentaires style ********************************************** */
                    </style>
    		<script>//---------------------------------------------------------------------------------------
                            'use strict'; // force la déclaration des variables
                            // ************************************ Commentaires script ********************************************** 
                            //---------------------------------------------------------------------------------------------
     
                    </script>
    	</head>
    	<body>
    		une page web, partie affichage<br><br><br>
    		<div id="demo"></div>
    		<script>
                            let arrayhebergement = ["Hôtel Beauvoir¤node/59719195¤hotel¤¤",
                                    "¤node/60206524¤hotel¤¤",
                                    "Hôtel des Mines¤node/60272387¤hotel¤¤",
                                    "Foyer International des Étudiantes¤node/60541641¤hostel¤¤",
                                    "Villa Louis Pasteur¤node/107944963¤guest_house¤¤",
                                    "Observatoire Luxembourg¤node/320575927¤hotel¤¤",
                                    "Hôtel Gay-Lussac¤node/734695116¤hotel¤¤",
                                    "Hôtel André Latin¤node/1684818338¤hotel¤¤",
                                    "Relais Saint-Jacques¤node/1685650818¤hotel¤¤"]
                            let outputhebergement="";
                            let i = 0;
                            do {
                                    let sentpghebergement = arrayhebergement[i];
    //console.log(sentpghebergement);
                                    let arrayinside = sentpghebergement.split('¤');
    //console.log(arrayinside);
                                    outputhebergement = outputhebergement + '<p>' + arrayinside[0] + ' </p>';
                                    i++;
                            } while (i < arrayhebergement.length);
    //console.log(outputhebergement);
                            document.getElementById("demo").innerHTML = outputhebergement
                    </script>
    	</body>
    </html>
    Citation Envoyé par Contenu de la div id="demo"
    Hôtel Beauvoir

    Hôtel des Mines

    Foyer International des Étudiantes

    Villa Louis Pasteur

    Observatoire Luxembourg

    Hôtel Gay-Lussac

    Hôtel André Latin

    Relais Saint-Jacques

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 153
    Points : 44 968
    Points
    44 968
    Par défaut
    Bonjour,
    le résultat n'est pas aberrant, tu ne « splites » pas le bon élément !
    Ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var arrayinside = sentpghebergement[i].split('¤');
    devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var arrayinside = arrayhebergement[i].split('¤');
    Tu as d'autres façons de faire plus lisibles comme,avec forEach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    const caract = "¤";
    let result = "";
    arrayhebergement.forEach((item) => {
      result = result + "<p>" + item.split(caract)[0] + "</p>";
    });
    console.log("Result :", result);
    ou avec reduce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const caract = "¤";
    const html = arrayhebergement.reduce((str, item) => str + "<p>" + item.split(caract)[0] + "</p>", "");
    console.log("HTML :", html);
    Ressources :

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Architecte sys d'info géographique
    Inscrit en
    Juin 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte sys d'info géographique
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2011
    Messages : 64
    Points : 30
    Points
    30
    Par défaut
    Bonjour,
    merci. j'ai fait un code qui reprend les solutions que vous avez trouvé

    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
     
       if (sentpgtransports == null) {sentpgtransports == " "}  else {
     let  arraytransports = sentpgtransports.split(","); 
    let ipgt = 0; 
    do { 
            let gtransports = arraytransports[ipgt];
     let arrayinside =  gtransports.split("  ");
     let logog = "";
           if (arrayinside[2] == 'toilets' || arrayinside[2] == 'convenience')  {
    logog = ' ^=^z '}; 
    outputtransports = outputtransports + '<a style="color: white;" href="javascript:gopoitip(\'transports\', \''  + arrayinside[1] + '\')">' + logog + arrayinside[0] + ' </a>'; 
           ipgt++;
               } 
    while (ipgt < arraytransports.length);
    };

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction .split par rapport à un nombre donné
    Par trentks95 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 16/02/2018, 20h14
  2. Réponses: 5
    Dernier message: 13/10/2005, 13h46
  3. Appel d'une fonction en C par un noyau en asm (link)
    Par julson dans le forum Programmation d'OS
    Réponses: 7
    Dernier message: 22/03/2005, 16h14
  4. [Fortran 90] Fonction Split()
    Par gchazelle dans le forum Fortran
    Réponses: 2
    Dernier message: 02/03/2005, 11h16
  5. fonction de tri par introspection
    Par ned-flanders dans le forum C++
    Réponses: 7
    Dernier message: 21/10/2004, 12h49

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