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 :

comment definir un array undefined


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut comment definir un array undefined
    Bonjour,

    Je vais essayer de m'expliquer, desole je ne suis pas informaticien et je ne possede pas le vocabulaire adequate

    j'ai un array avec un nombre de valeurs numerique (1,2,3,etc...) a l'interieurs qui change en permanence.

    je cherche a faire une fonction pour que si une des valeur n'existe pas elle utilise la valeur du premier element de l'array.

    j'ai essaye les combinaisons suivantes mais meme si j'ai une valeur dans long[1] il me la trasforme quand meme en long[0].
    Comment definir une variable long[2] alors que le dernier element de mon array serait long[1]



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (long[1] !== '0') { 
    long[1] = long[0];
    }
    ou encore
    if (long[1] !== 'undefined') { 
    long[1] = long[0];
    }
    j'ai aussi essaye (toujours sans succes)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (long[1] > 0) { 
    break;
    else
    long[1] = long[0];

    Merci de votre aide

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    Citation Envoyé par voyageurdumonde Voir le message
    Bonjour,

    Je vais essayer de m'expliquer, desole je ne suis pas informaticien et je ne possede pas le vocabulaire adequate

    j'ai un array avec un nombre de valeurs numerique (1,2,3,etc...) a l'interieurs qui change en permanence.

    je cherche a faire une fonction pour que si une des valeur n'existe pas elle utilise la valeur du premier element de l'array.

    j'ai essaye les combinaisons suivantes mais meme si j'ai une valeur dans long[1] il me la trasforme quand meme en long[0].
    Comment definir une variable long[2] alors que le dernier element de mon array serait long[1]



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (long[1] !== '0') { 
    long[1] = long[0];
    }
    ou encore
    if (long[1] !== 'undefined') { 
    long[1] = long[0];
    }
    j'ai aussi essaye (toujours sans succes)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (long[1] > 0) { 
    break;
    else
    long[1] = long[0];

    Merci de votre aide
    pour tester si une variable est nulle ou n'est pas définie en javascript tu as 3 méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(mavar!=null) {
     
    }
    // OU
    if(typeof mavar == 'undefined') {
     
    }
    // OU plus simplement
    if(!mavar) {
     //si mavar est null ou chaine vide "" la condition sera true
    }
    Ben oui, toi tu testais si mavar!='undefined', mais tu ne faisais que tester une variable avec une chaine de caractères d'ou l'utilisation du typeof, mais je préfère la 3ème méthode qui est plus simple.

    Maintenant pour modifier ton tableau en question il suffit simplement de le parcourir avec une boucle et de faire le test adéquat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //en javascript un tableau commence à 0 et fini à longueur-1, mais comme 
    //ici on saut que 0 n'est pas une valeur vide, alors on n'a pas besoin de commencer par zéro.
    for (var i=1; i<long.length; i++) {
       if(!long[i]) {
           long[i] = long[0];
       }
    }

  3. #3
    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
    Si tu dois faire cette vérification pour l'ensemble des éléments de ton tableau :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    for (var i = 0, iMax = long.length; ++i) long[i] = long[i] || long[0];
    C'est une notation qui est devenue assez courante pour attribuer une valeur par défaut, courte et lisible.

    edit : attention ce code contient une erreur (corrigée plus bas, merci au vigilant dukej )

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Si tu dois faire cette vérification pour l'ensemble des éléments de ton tableau :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    for (var i = 0, iMax = long.length; ++i) long[i] = long[i] || long[0];
    C'est une notation qui est devenue assez courante pour attribuer une valeur par défaut, courte et lisible.
    y a une erreur dans ton for
    Et doucement avec le monsieur, il a dit qu'il n'était pas informaticien, si tu viens lui balancer les notations allégers de type
    var = var || "newvalue";
    il va pas comprendre

  5. #5
    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 dukej Voir le message
    y a une erreur dans ton for
    Merci pour la relecture
    >>> Au temps pour moi je suis allé trop vite
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    for (var i = 0, iMax = long.length; i < iMax; ++i) long[i] = long[i] || long[0];

  6. #6
    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 dukej Voir le message
    le monsieur, il a dit qu'il n'était pas informaticien, si tu viens lui balancer les notations allégers de type
    var = var || "newvalue";
    il va pas comprendre
    Bah, on aurait pu faire + compact et - clair
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    for(var i=0,j=long.length;i<j;++i)long[i]||long[i]=long[0];

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Bah, on aurait pu faire + compact et - clair
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    for(var i=0,j=long.length;i<j;++i)long[i]||long[i]=long[0];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var i=-1;while(++i<long.length)long[i]||long[i]=long[0]
    ??

  8. #8
    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 dukej Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var i=-1;while(++i<long.length)long[i]||long[i]=long[0]
    ??
    mouarf ! ^^ oui j'avais hésité à passer par le while, mais je ne voulais qu'une instruction :p

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    Merci pour tous ces renseignements, je vais regarder cela ce soir en rentrant du travail

  10. #10
    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
    Un détail me frappe après coup : évite d'appeler ton tableau "long", c'est un mot réservé en JS. ^^
    Ce ne pose pas de problème aujourd'hui, mais par principe il vaut mieux l'éviter, ce n'est pas méchant de renommer "long" en "tlong" ou "t_long" ou "l" ou "choucrouteGarnieAuxOlivesBraisees", et ça t'évitera d'avoir un de ces jours un problème de compatiblité, quand ce problème et cette implémentation particulière te seront complètement sortis de l'esprit et que la norme ECMA évoluera

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(var i=0,l=long,i<l.length;++i)l[i]||l[i]=l[0];

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    Merci pour tous ces renseignements, je n'ai que l'embarra du choix.
    Merci pour l'info RomainVALERI.

  13. #13
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ou même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i in t) t[i]=t[i] || t[0];

  14. #14
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var i=0;
    while(!(t[++i]) && (t[i]=t[0]));

  15. #15
    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
    dukej, fais gaffe...

    notre petit repas improvisé a attiré des grands fauves
    (et bravo les gars, encore un effort on approche du code parfait : 0 caractères ! ^^)

  16. #16
    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
    juste pour réintegrer l'initialisation de i sur la même ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=1;!t[i] && (t[i]=t[0]);t[++i]){}
    une grenouille grand fauve ???

  17. #17
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    juste pour réintegrer l'initialisation de i sur la même ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=1;!t[i] && (t[i]=t[0]);t[++i]){}
    une grenouille grand fauve ???
    et une méthode avec map ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    array = array.map(function(v,i,arr) {
      return v || arr[0];
    })

  18. #18
    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
    il te faut definir le prototype map avant qui n'existe pas en javascript

  19. #19
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    il te faut definir le prototype map avant qui n'existe pas en javascript
    Et si l'array n'est que composé de string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var sep = '$SEP$';
    arr = arr.join(sep).replace(new RegExp(sep+sep,'g'), sep+arr[0]+sep).split(sep);
    j'ai bon ?

  20. #20
    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
    curieusement non il renseigne un vide sur deux ...
    vu que il les prend par paire ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/05/2005, 12h31
  2. Réponses: 2
    Dernier message: 02/05/2005, 11h57
  3. Réponses: 7
    Dernier message: 11/04/2005, 22h23
  4. Comment definir un string java en c++
    Par chelguera dans le forum C++
    Réponses: 13
    Dernier message: 31/12/2004, 12h56
  5. [SQLClientDataSet] comment definir un index ?
    Par kase74 dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/09/2004, 14h14

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