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 :

Savoir si les values d'un array sont les mêmes


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Informaticien versatile
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien versatile

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 28
    Points
    28
    Par défaut Savoir si les values d'un array sont les mêmes
    Bonjour,

    Je cherche à savoir si toutes les valeurs contenues dans mon array sont identiques, si oui je continue mon, sinon j'affiche un message d'erreur.

    J'ai essayé la façon suivante :

    id_case étant mon array (contenant les valeurs : 100,100,200)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(var i = 1 ; i < id_case.length ; i ++){
    	if(id_case[i] != id_case[0]){
    		alert("Error !")
    		break;}		
    	else {
    		My code 
    	}
    }
    Et pourtant ça ne fonctionne pas.
    L'erreur n'est jamais affichée.

    Je suis au courant qu'il existe un arrray.every mais je suis pas trop sûr de son utilisation ...

  2. #2
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut
    La fonction length de javascript réserve parfois de mauvaises surprises sur des tableaux associatifs avec des nombres.

    À quoi ressemble précisément ton tableau ? Car je viens de tester ton code avec var id_case = [ 100, 100, 100, 200, 100 ]; et ça fonctionne correctement.
    Chen norris
    C/C++, C#, Java, PHP & SQL coder
    Web developer

  3. #3
    Membre averti
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Points : 362
    Points
    362
    Par défaut
    Bonjour,

    Il n'y a pas de problème particulier avec la propriété length des tableaux (objets de type Array). Cette propriété n'est pas définie sur les objets (objets de type Object).

    Citation Envoyé par http://www.ecma-international.org/ecma-262/5.1/#sec-15.4
    A property name P (in the form of a String value) is an array index if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32−1.
    Cette propriété prend comme valeur, la valeur du plus grand index de tableau plus 1. Les indexes peuvent être spécifiés sous forme de chaine de caractères, ou de valeurs numériques. tab[5] est équivalent à tab["5"] mais pas à tab[" 5"] ou tab["+5"] à cause de la contrainte exprimée : ToString(ToUint32(P)) == P. "5" == " 5" est faux.

    Dans l'exemple de code que tu donnes, si id_case n'est pas un tableau (Array.isArray(id_case) est faux), la propriété length peut ne pas avoir une valeur correcte, voire pas de valeur du tout. A part ça je ne vois pas de problème.

    Pinaillage ou affaire de gout : bien que la grammaire le permette, les espaces, entre la variable et les opérateurs de pré/post incrémentation (resp. décrémentation), nuisent à la lisibilité je trouve. Et typiquement, c'est plutot un opérateur de pré-incrémentation qu'il faudrait utiliser, soit ++i puisque la valeur précédente de i (i.e. avant l'incrémentation) n'est pas utilisée.

    Pour every :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var isSameValue, searchValue;
    if ( id_case.length > 1 ) {
        searchValue = id_case[0];
        isSameValue = id_case.every(function( value /*, index, array */ ) {
            return searchValue === value
        } );
        if ( ! isSameValue ) {
            alert("Error !");
            ...
        }
    }

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var isSame = true;
    for (var i=1; isSame&&i<id_case.length; i++) {//tant qu'on a des éléments et qu'il ont la même valeur
      isSame = (id_case[0] == id_case[i]); //touts les éléments continuent à avoir la même valeur si l'élément courant à la même valeur que le premier
    }
    // on sort de la boucle parce que un test à échoué et on a false
    // soit on a été au bout et on a true
    console.log(isSame);
    A+JYT

  5. #5
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut
    Un tag "Résolu" peut-être ?
    Chen norris
    C/C++, C#, Java, PHP & SQL coder
    Web developer

Discussions similaires

  1. Quels sont les formats graphiques supportés nativement par les navigateurs
    Par Plopcool dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 08/03/2009, 19h17
  2. Réponses: 1
    Dernier message: 08/08/2008, 17h12
  3. Réponses: 10
    Dernier message: 29/11/2007, 14h08
  4. Quels sont les moyens pour encoder plusieurs éléments en même temps
    Par finalfx dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/01/2007, 00h00

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