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 :

Petite curiosité chaine = array ou presque


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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut Petite curiosité chaine = array ou presque
    Sur les versions récentes de certains navigateurs, js considère un string comme un array (comme en php), mais il semblerait que ce soit un array en lecture seule ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      var mytest="aaaaaa"
        mytest[1]="b"
        alert(mytest[1])

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Salut spacefog, j'ai été moi aussi confronté assez récemment a ce nouveau comportement la seul solution que j'avais trouvé pour pouvoir écrire dans ce pseudo tableau, avait été de passer par une concaténation grossière , un comportement plus string que array sur ce point.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var mytest="aaaaaa"
        mytest = mytest[0]+"b"+mytest[2]+mytest[3]+mytest[4];
    alert(mytest[1]);
    Le tableau en lui même n'est ni utilisable directement comme un tableau à par pour afficher un caractère ou des caractères pas possible d'utiliser des fonctions en mode écriture sur les arrays du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mytest="aaaaa"
    mytest[1].push("b"); //génère une erreur
    mytest.join("."); // génère une erreur
    C'est bien dommage.

    Bonne soirée.

  3. #3
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Les navigateurs qui autorisent les accolades(de tableau, ça s'appelle comment?) pour récupérer une valeur à un indice donné d'un string, l'implémentent probablement comme un simple raccourci d'écriture de charAt (qui n'est pas un setter).

    Sinon une solution simple pour faire ce que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var myString = 'aaaaaa';
    myArray = myString.split('');
    myArray[1] = 'b';
    myString = myArray.join('');

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    +1 Will : ce n'est qu'une facilité d'accès ajoutée aux objets String (à en croire le MDN, cette fonctionnalité fait partie d'ECMAScript 5 et non ECMAScript 3), mais à part ça (et malheureusement en effet, je suis avec vous dans ce regret les gars ^^) ça n'en fait pas un objet Array, donc les méthodes de traitement de tableaux qui vont avec... on oublie

    Et sinon à part ça :
    Citation Envoyé par Willpower Voir le message
    les accolades(de tableau, ça s'appelle comment?)
    des crochets, mon capitaine !

  5. #5
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    des crochets, mon capitaine !
    merci

  6. #6
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Oui il suffit de passer par un split('') pour retomber sur un tableau afin de pouvoir utiliser les methodes d'un véritable array.
    Il eût été tellement plus pratique de pouvoir bénéficier d'un array pour manipuler simplement les chaines avec des indices au lieu des substr() substring() et autre fonctions à deux paramètres ...

    Mais bon on va dire que c'est ce qui fait le charme de javascript

  7. #7
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    au lieu des substr() substring() et autre fonctions à deux paramètres ...
    Qu'est-ce que t'as contre slice ? (mouarf.... on est d'accord ça fait vraiment découpage-collage ^^)

  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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    non j'ai rien contre slice ^^
    mais c'est dommage on était a deux doigts du bonheur et paf ! Non mossieur c'est pas un array


  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par RomainVALERI
    Qu'est-ce que t'as contre slice ?
    Tu es un expert en quadripilectomie ?

  10. #10
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Tu es un expert en quadripilectomie ?
    ou en fission capillaire ^^

Discussions similaires

  1. Petit problème d'array
    Par julspower dans le forum C++
    Réponses: 4
    Dernier message: 29/11/2008, 04h29
  2. [Tableaux] Petit algo et array
    Par seaker dans le forum Langage
    Réponses: 3
    Dernier message: 21/12/2007, 21h06
  3. Réponses: 8
    Dernier message: 04/08/2006, 15h24
  4. petite curiosité informatique
    Par badboys206s16 dans le forum ASP
    Réponses: 3
    Dernier message: 24/07/2006, 17h28
  5. Petit probleme avec Arrays.Sort(...)
    Par Seth77 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 15/01/2006, 12h48

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