Exercice 24/31

Soit la variable ecran qui contient un tableau associatif.

Dans le fichier "script.js" vous aurez besoin :

  • de déclarer la variable result qui contient un tableau ordonné vide;
  • d'une boucle for in avec la variable ìd comme itérateur;
  • d'une condition if pour tester si chaque élément du tableau associatif est considéré comme "true";
  • si c'est le cas, vous aurez besoin de push() pour ajouter les valeurs dans le tableau result;
  • à la suite de première boucle, une boucle for avec la variable i comme itérateur et alert() pour afficher le tableau result;
  • cliquez sur "Soumettre ma réponse".

Leçon 24/31

Exercice de rappel pour récupérer les valeurs "true" dans un tableau associatif pour les ajouter dans un tableau ordonné et afficher le tableau.

Commentaires les mieux notés

  • bsmeyers84

    AVEZ-VOUS BIEN ÉCRIT LA STRUCTURE DE LA BOUCLE "FOR IN" ?,LE TABLEAU "RESULT" N'A PAS LA BONNE LONGUEUR.,AVEZ-VOUS BIEN ÉCRIT LA STRUCTURE DE LA BOUCLE "FOR" ?

  • mram Administrateur

    C'est encore et toujours le même souci de l'indentation en trop : ici lignes 11 à 13.

  • mram Administrateur

    Pas besoin de déclarer la variable écran, elle existe déjà.

  • mram Administrateur

    LE code lignes 5 à 7 doit avoir une tabulation en plus. Et ligne 9 pourquoi mettre [id]. Et ligne 11 il faut mettre [i] et pas [id].

81 Commentaires

  • bsmeyers84

    bsmeyers84

    AVEZ-VOUS BIEN ÉCRIT LA STRUCTURE DE LA BOUCLE "FOR IN" ?,LE TABLEAU "RESULT" N'A PAS LA BONNE LONGUEUR.,AVEZ-VOUS BIEN ÉCRIT LA STRUCTURE DE LA BOUCLE "FOR" ?

    le 26/08/2016 à 18h28

  • mram

    mram Administrateur

    C'est encore et toujours le même souci de l'indentation en trop : ici lignes 11 à 13.

    le 17/10/2016 à 00h28

  • mram

    mram Administrateur

    Pas besoin de déclarer la variable écran, elle existe déjà.

    le 16/09/2016 à 14h52

  • mram

    mram Administrateur

    LE code lignes 5 à 7 doit avoir une tabulation en plus. Et ligne 9 pourquoi mettre [id]. Et ligne 11 il faut mettre [i] et pas [id].

    le 21/05/2017 à 22h19

  • veronicalavroff

    veronicalavroff

    Quel est le bon code svp?

    le 10/08/2016 à 00h59

  • mram

    mram Administrateur

    Ligne 2 il faut un espace après le for. Ligne 4 ovous vérifiez l'inverse de ce qui est demandé. Ligne 11 il faut récupérer la longueur du tableau"result".

    le 30/08/2016 à 20h46

  • Timo

    Timo

    Bonjour, pouvez vous m'éclairer sur mon code ? merci

    le 18/09/2016 à 18h52

  • laurent.sama

    laurent.sama

    Bonjour, j'ai essaye 1 million de trucs avec alert mais toujours le même message, "avez vous bien afficher etc etc.." var result = []; for (var id in ecran) { if (ecran[id]) { result.push(ecran[id]); } } for (i = 0; i < ecran[id]; i++) { alert(result[id]); }

    le 17/09/2016 à 13h51

  • bsmeyers84

    bsmeyers84

    modification faite tjs même problème: AVEZ-VOUS BIEN ÉCRIT LA STRUCTURE DE LA BOUCLE "FOR IN" ?,LE TABLEAU "RESULT" N'A PAS LA BONNE LONGUEUR.,AVEZ-VOUS BIEN ÉCRIT LA STRUCTURE DE LA BOUCLE "FOR" ?

    le 30/08/2016 à 16h05

  • y.redjah

    y.redjah

    voici mon code il me semble correct par rapport à ce qui nous est demandé mais j'ai l'erreur le tableau result n'a pas la bonne longueur var result = []; for (var id in ecran) { if (ecran[id] == true) { result.push(ecrand[id]); } } for (i = 0; i < result.longth; i++) { alert(result[id]); }

    le 27/04/2017 à 13h38

  • egravouil

    egravouil

    Bonjour, en validant ce code j'ai le message suivant qui s'affiche "le tableau result n'a pas la bonne longueur", je ne comprends pas d'où provient mon erreur. Pouvez-vous me l'indiquer svp ? Merci.

    le 19/09/2016 à 16h23

  • y.redjah

    y.redjah

    j'ai corrigé une erreur de frappe mais j'ai toujours un message d'erreur avez vous bien afficher les éléments du tableau dans alert() avec ce code var result = []; for (var id in ecran) { if (ecran[id]) { result.push(ecran[id]); } } for (i = 0; i < result.longth; i++) { alert(result[id]); }

    le 27/04/2017 à 14h04

  • y.redjah

    y.redjah

    c'est bon j'ai trouvé ^^

    le 27/04/2017 à 15h22

  • mram

    mram Administrateur

    Vous pouvez utiliser comme base votre code sur les exercices du même type. Il n'y a que l'étape 5 en plus (une simple boucle for). Et toujours pas besoin de déclarer de variable longueur.

    le 11/08/2016 à 00h27

  • mram

    mram Administrateur

    @laurent.sama : Ligne 4, il faut utilisé "==". Un seul "=" sert juste à affecter une valeur à une variable comme à la ligne 1.

    le 21/09/2016 à 09h11

  • mram

    mram Administrateur

    @Timo : ligne 9 vous ne récupérez pas la longueur du bon tableau et ligne 11 vous ne récupérez pas un élément en particulier dans le tableau (il faut un itérateur)

    le 21/09/2016 à 09h14

  • mram

    mram Administrateur

    @egravouil : ligne 9, il faut récupérer la longueur du tableau result. Revoyez comment fonctionne la boucle "for" ...

    le 21/09/2016 à 09h15

  • fumey.claire

    fumey.claire

    pouvez-vous m'aider? merci

    le 19/12/2016 à 15h19

  • mram

    mram Administrateur

    Oui en effet, ne pas boulier que dans un "if" nous sommes dans un contexte de boléen, donc il suffit de mettre notre variable à tester et elle sera automatiquement évaluée à vrai ou faux selon ce qu'elle contient. Donc pas besoin de préciser si c'est égale à true ou false.

    le 28/04/2017 à 15h39

  • egravouil

    egravouil

    Ah oui d'accord je comprends pour la longueur du tableau. En revanche je ne comprends pas pourquoi il faut seulement indiquer if (ecran[id]) et non if (ecran[id] == true) ?

    le 21/09/2016 à 11h33

  • mram

    mram Administrateur

    Oui c'est un bug connu, on travaille dessus. Votre code est à priori correct.

    le 07/06/2017 à 13h29

  • mram

    mram Administrateur

    Ligne 6, c'est votre signe "==" qui pose problème.

    le 22/12/2016 à 12h43

  • mickael.59300

    mickael.59300

    je suis bloqué : var result = []; for (var id in ecran) { if (ecran[id].length == true) { result.push(ecran[id]); } } for (var id in ecran) { alert(result); }

    le 03/04/2017 à 23h36

  • mram

    mram Administrateur

    Le premier cas dit "si ecran[id] est vrai" et le second cas dit "si il est vrai que ecran[id] est vrai" .... Revoyez le principe de la condition if si nécessaire.

    le 21/09/2016 à 21h05

  • mram

    mram Administrateur

    Ligne 5 il suffit juste de tester ecran[id]. Et ligne 10 ce n'est pas la bonne boucle que vous utilisez il faut une boucle "for" pour parcourir un tableau ordonné.

    le 05/04/2017 à 13h25

  • sylvain.duverger

    sylvain.duverger

    Bonjour, j'ai un problème avec mes exercices, j'en ai fait pas mal et aucun n'est à 100 % pouvez vous m'aider s'il vous plait.

    le 09/11/2016 à 11h29

  • mram

    mram Administrateur

    Bonjour, êtes-vous connecté avec votre compte utilisateur quand vous faites les exercices ??

    le 09/11/2016 à 15h10

  • sylvain.duverger

    sylvain.duverger

    Oui

    le 09/11/2016 à 18h36

  • sylvain.duverger

    sylvain.duverger

    Bonjour, avez vous pu identifier mon problème?

    le 10/11/2016 à 15h36

  • Pakal texas ranger

    Pakal texas ranger

    Bonjour , je bloque depuis hier sur l'exo .. je ne comprend pas mon erreur :) : var result= [] for (var id in ecran) { if (ecran[id]) { result.push([id]); } } for (i = 0 ; i < ecran[id] ; i++) { alert(result + [i] ); } merci bien :)

    le 14/03/2017 à 09h02

  • patricerameaux

    patricerameaux

    j'ai juste "avez-vous bien écrit la structure de la boucle for in ? " : où est le problème : définitivement j'ai toujours le même message, allez -vous me répondre ? j'ai besoin de savoir impérativement maintenant

    le 14/10/2016 à 10h56

  • patricerameaux

    patricerameaux

    j'en assez maintenant : toujours "avez-vous bien écrit la boucle for in ? aidez-moi car c'est le seul écueuil que je rencontre pour cette écriture j'ai strictement reproduit votre exemple ce qui voudrait dire que votre instruction est erronée ! veuillez-bien me répondre svp

    le 14/10/2016 à 11h08

  • patricerameaux

    patricerameaux

    toujours "avez-vous bien écrit la boucle for in ?" : j'en ai assez maintenant ça m'empêche d'avancer, j'ai besoin de votre avis impérativement

    le 14/10/2016 à 11h33

  • cdezandee

    cdezandee

    Franchement la pédagogie des cours est limitée, on apprend des éléments sans savoir à quoi ça sert concrètement et avec des exercice dénués de sens ( intérêt ?), j'ai l'impression d'être un animal de foire qui fait des pirouettes sans savoir comment. bref dans 5 jours, je ne me souviendrai plus de rien. C'est bête, j'ai prévu de faire la formation dans 5 mois. "Exécuter JavaScript" ne fonctionne pas ou rarement. Retourner sur les anciens "cours" est tout sauf pratique avec l'arborescence partielle. Un corrigé avec des commentaires sur ce que fait le code serai plus intéressant que je chercher ou est "l'espace", "la virgule" et le "retour à la ligne". la cerise sur le gâteau serai d'avoir un rappel des règles utilisées.

    le 14/11/2016 à 19h05

  • bretel.val

    bretel.val

    Le message "Avez-vous bien affiché les éléments du tableau avec alert()?" s'affiche, je sais que j'ai une erreur entre var i = 0 et i++ mais je ne sais pas quoi mettre pour i< .

    le 29/05/2017 à 18h09

  • mram

    mram Administrateur

    Erreur 1 ligne 6 : [id] ne suffit pas, il faut aussi le nom du tableau. Erreur 2 ligne 9 : il faut utiliser .length. Erreur 3 ligne 11 : pourquoi mettre le + ? Les crochet [] s'utilisent toujours directement après le nom du tableau

    le 17/03/2017 à 19h32

  • mram

    mram Administrateur

    Bonjour, la pédagogie d'un exercice interactif à effectuer seul chez soi est forcément plus limité qu'un vrai cours, surtout quand on débute dans ce domaine. Tâtonner et/ou avancer "à l'aveugle" est un sentiment normal, surtout si vous n'avez jamais fait de Javascript. Pour rappel, ces exercices Javascript ne sont pas obligatoires et sont là pour vous donner un aperçu général de ce qu'est le code et les langages du Web. Donc le sentiment d'avoir du mal est tout à fait légitime : le but n'est pas que vous soyez opérationnel à la fin de ces exercices, la formation sera là pour ça.

    le 16/11/2016 à 19h19

  • mram

    mram Administrateur

    Pourriez-vous préciser "des éléments sans savoir à quoi ça sert concrètement" ? Chaque exercice contient des explications sur l'utilité de la notion abordée et l'intérêt de chaque exercice est de vous faire connaître des notions et/ou concepts de bases en HTML, CSS et Javascript. L'objectif n'est pas que vous les maîtrisez à 100% après chaque exercice (la formation sera là pour ça) mais porter à votre connaissance des éléments de base de ces langages.

    le 16/11/2016 à 19h24

  • mram

    mram Administrateur

    Faire les exercices 1 fois sans y revenir, pour quelqu'un qui débute, c'est normal de ne plus s'en souvenir plusieurs mois après. Vous pouvez évidemment revenir sur les exercices que vous souhaitez quand bon vous semble d'ici le début de votre formation.

    le 16/11/2016 à 19h26

  • mram

    mram Administrateur

    Oui l'arborescence du site n'est pas optimale, nous travaillons sur une nouvelle interface plus intuitive pour la navigation à travers les exercices. Le souci d'exécution du Javascript sera aussi corrigé lors de la prochaine mise à jour. Et l'option d'un corrigé avec les commentaires est une solution que nous allons étudier, merci pour ce retour.

    le 16/11/2016 à 19h30

  • vincent.plasson

    vincent.plasson

    Bonjour, je souhaiterais savoir s'il est possible d'avoir une indication sur mon erreur : var result = [];for (var id in ecran){if(ecran[id]){result.push(ecran[id]);}}var i = 0;var long = ecran.length;for (i = 0; i < long; i++){if (result){alert(result[id]);}} J'ai essayé avec if dans la boucle for, j'ai essayé sans, j'ai essayé une alert(result[id]); et une alert(result[i]); mais rien ne marche. Merci !

    le 17/04/2017 à 18h31

  • patricerameaux

    patricerameaux

    ok merci j'ai bien compris et désolé pour tous les messages mais vous n'aviez répondu à aucun d'entre eux

    le 17/10/2016 à 15h27

  • mram

    mram Administrateur

    La boucle "for" est à la suite de la boucle "for in". Elle sert à parcourir le tableau "result" pour en afficher chaque élément après les avoir ajouter grâce à la boucle "for in". Car "result" est vide au début de l'exercice. Exercice en 2 étapes qui sont distinctes. J'ai modifié les instructions pour que ce soit plus clair.

    le 26/08/2016 à 19h55

  • danderhy3

    danderhy3

    var result = []; for (var id in ecran) { if (ecran[id]) { result.push(ecran[id]); } } for (i = 0; i < ecran.length[id]; i++) { alert(result[id]); } j ai un pb de resolution quelle est il svp?

    le 16/05/2017 à 23h47

  • danderhy3

    danderhy3

    var result = []; for (var id in ecran) { if (ecran[id]) { result.push(ecran[id]); } } for (i = 0; i < result.length[id]; i++) { alert(result[id]); } Avez vous bien affiché les elements avec ALERT; je pense que oui mais peut être pouvez vous m'aider à trouver la solution MERCI

    le 17/05/2017 à 17h08

  • mram

    mram Administrateur

    Emploi du temps (très) chargé ces derniers jours, j'ai répondu aux commentaires des derniers jours dimanche soir, et traité en priorité l'intégralité des votre car vous postez régulièrement. Je continue ce matin, selon les créneaux que mon emploi du temps me permet mes passages ne sont pas forcément réguliers.

    le 18/10/2016 à 09h59

  • mram

    mram Administrateur

    La 2ème boucle doit être après la première, et non à l'intérieur.

    le 01/06/2017 à 16h25

  • mram

    mram Administrateur

    Bonjour, alors la ligne 9 est inutile car ligne 11 vous dites déjà que i = 0. Ensuite ligne 10 ce n'est pas la longueur de "ecran" qu'il faut récupérer mais celle de "result".

    le 22/04/2017 à 11h26

  • jovidal

    jovidal

    Je pense mon code correct mais le robot me refuse le code avec message que je n'ai jamais vu SYNTAXERROR: UNEXPECTED IDENTIFIER en actualisant la page le code que j'ai rentré est automatiquement changé Oo Mon code: var result = []; for (var id in ecran) { if (ecran id) { result.push(ecran[id]); } for (i=0; i<result.length; i++) { alert(result); } } Le code qui apparait apres actualisation de la page: var result = []; for (var id in ecran) { if (ecran id) { result.push(ecran[id]); } for (i=0; i<result.length; i++)="" {="" alert(result);="" }="" }<="" div=""> </result.length;> D'ailleurs la page s'affiche bizarrement: https://www.noelshack.com/2017-22-1496402930-capture.png (on dirait un bug pour interpréter du CSS non ?)

    le 02/06/2017 à 13h30

  • omr.khouas

    omr.khouas

    bonjour, pourriez vous m'indiquez mon erreur svp! Le tableau "result" n'a pas la bonne longueur.,Avez-vous bien affiché les éléments du tableau avec alert() ?

    le 15/09/2016 à 16h59

  • rachid

    rachid

    Impossible de trouver mon erreur; var result = []; for (var id in ecran) { if (ecran[id]) { result.push(ecran[id]); } } for (i = 0; i < result.length; i++) { alert(result[i]); }

    le 22/12/2017 à 19h03

  • mram

    mram Administrateur

    Bonjour, attention à l'indentation des accolades de la dernière boucle.

    le 23/12/2017 à 17h39

  • danderhy3

    danderhy3

    var ecran = []; for (var id in ecran) { if (ecran[id]=="true") { result.push(ecran[id]); } } for (i = 0; i < result.length; i++) { alert(result[i]); } c est bieen ca?

    le 19/07/2017 à 09h25

  • mram

    mram Administrateur

    Bonjour, il ne faut pas oublier le "var" devant "i = 0" .

    le 23/07/2017 à 15h49

  • gaudin.yannick69-79

    gaudin.yannick69-79

    Bonjour, je viens de valider l'exercice mais je me demande si la seconde boucle for n'est pas superflu et si on ne pouvait pas intégrer l'affichage des éléments de result directement dans la boucle if en vue de simplification du code. Merci par avance pour votre réponse, bonne journéé

    le 18/08/2018 à 15h50

  • mram

    mram Administrateur

    Bonjour, oui c'est faisable, mais ici le but est aussi de vous faire manipuler les boucles autant que possible. Donc on le fait volontairement en deux étapes.

    le 28/08/2018 à 22h41

  • daviwys

    daviwys

    Bonjour, j'ai un soucis avec les "booléens" et, en lisant la dernière explication de @mram du 21/09/2016 à 21h05, si je comprends bien ? : une variable est VRAI si elle contient une VALEUR et, FAUX si elle n'en contient pas. Ai-je bien compris SVP ? Merci d'avance.

    le 22/09/2017 à 17h44

  • mram

    mram Administrateur

    Bonjour, oui c'est ça.

    le 22/09/2017 à 19h13

  • ets_raphael-59

    ets_raphael-59

    Je ne comprends pas pourquoi le miens ne marche pas pourtant tout y est..

    le 27/07/2018 à 02h22

  • mram

    mram Administrateur

    La condition ligne 4 n'est pas la bonne.

    le 02/08/2018 à 05h09

  • elisabeth.elisabeth-29

    elisabeth.elisabeth-29

    bonjour, je ne trouve pas mon erreur. merci d'avance :)

    le 09/04/2018 à 19h17

  • mram

    mram Administrateur

    Bonjour, la dernière instruction alert(result); est incomplète.

    le 11/04/2018 à 05h54

  • ts.fabius-98

    ts.fabius-98

    bonsoir,,besoin d'aide pour mon compte svp..

    le 15/09/2018 à 17h28

  • mram

    mram Administrateur

    Bonjour, quelle aide ? Quel souci avez-vous ?

    le 16/09/2018 à 08h43

  • armand1807

    armand1807

    var result= []; for (var id in ecran) { if (!ecran[id]) { result.push(ecran[id]); } for (var i=0; i<result.length;i++) { alert(result[i]); } } j'étais sur de moi pourtant..

    le 16/08/2017 à 22h10

  • mram

    mram Administrateur

    Le code est correct, c'est juste la syntaxe : votre dernière boucle "for" a une tabulation en trop.

    le 17/08/2017 à 16h07

  • bot666

    bot666

    help je pense que mon code est bon

    le 07/01/2018 à 14h16

  • mram

    mram Administrateur

    Bonjour, ajoutez juste un espace après "if" .

    le 12/01/2018 à 01h14

  • armand1807

    armand1807

    problème résolut j'ai fais qu'une seule boucle avec les 2 for

    le 17/08/2017 à 11h05

  • mram

    mram Administrateur

    Bonjour, votre code est correct mais vous avez bien écrit 2 boucles "for" et pas qu'une seule.

    le 17/08/2017 à 19h57

  • leger02

    leger02

    Bonjour, je ne comprend pas pour ce message d'erreurs s'affiche :"Avez-vous bien déclaré les variables demandées ? " Mon code : var result =[]; for (var id in ecran) { if (ecran[id]) { result.push(ecran[id]); } } for (i = 0; i < result.length; i++) { alert(result[i]); }

    le 25/09/2017 à 18h36

  • mram

    mram Administrateur

    Bonjour, il manquait la déclaration de "i". Et il faudrait ajouter une tabulation pour toute la structure "if".

    le 29/09/2017 à 01h11

  • celine.bru.69-2

    celine.bru.69-2

    Bonjour, pouvez-vous me dire où se trouve mon erreur.Merci

    le 26/04/2018 à 17h19

  • mram

    mram Administrateur

    Bonjour, petit souci d'indentation ici. Ligne 6 et les trois dernières lignes.

    le 29/04/2018 à 03h55

  • leger02

    leger02

    J'ai trouvé mon erreur !

    le 26/09/2017 à 15h30

  • patricia.piccot-8

    patricia.piccot-8

    Bonjour, petit coup de main?

    le 11/02/2019 à 20h40

  • meriam

    meriam Administrateur

    votre dernier code est correct.

    le 13/02/2019 à 11h33

  • guillaume.b81-47

    guillaume.b81-47

    j'avais fais 2 erreurs sur mon code précédent que j'ai corrigé et ça ne passe toujours pas : var result[]; for (var id in ecran) { if (ecran[id]) { result.push(ecran[id]) } } for ( var i = 0; i < result.length; i++) {alert(result[id]); }

    le 12/02/2019 à 16h04

  • meriam

    meriam Administrateur

    A la ligne 8, corrigez la déclaration du tableau var result= [] et non pas var result[].

    le 13/02/2019 à 13h04

  • x.jouclas

    x.jouclas

    Bonjour, j'ai un message d'erreur me disant que les éléments du tableaux ne sont pas affichés avec alert():

    le 22/11/2017 à 16h01

  • mram

    mram Administrateur

    Bonjour, la deuxième boucle for doit être après la première, et non à l'intérieur.

    le 26/11/2017 à 19h21

  • danderhy3

    danderhy3

    var result = []; for (var id in ecran) { if (ecran[id]) { result.push(ecran[id]); } } for (i = 0; i < result.length; i++) { alert(result[i]); } est ce bien le bon code svp

    le 13/07/2017 à 22h56

  • mram

    mram Administrateur

    Bonjour, ligne 4 il faut juste vérifier si ecran[id] est "vrai", cela n'a rien à voir avec sa longueur.

    le 16/07/2017 à 10h48

  • JeanAnx

    JeanAnx

    Bonjour, j'ai épluché les commentaires mais je ne vois pas où ça coince. Pouvez-vous m'aider ?

    le 20/03/2018 à 18h28

  • mram

    mram Administrateur

    Bonjour, il faut aussi déclarer la variable "i" .

    le 24/03/2018 à 05h34

  • nkeshimanabrice-37

    nkeshimanabrice-37

    merci meriam bien vu et corrigé

    le 04/04/2019 à 10h21

  • patricia.piccot-8

    patricia.piccot-8

    Trouvé, merci

    le 12/02/2019 à 00h41

  • pzim-34

    pzim-34

    SOLUTION : var result = []; for (var id in ecran) { if (ecran[id]) { result.push(ecran[id]); } } for (var i = 0; i<result.length; i++) { alert(result[i]); }

    le 23/03/2019 à 03h08

  • ngout-50

    ngout-50

    Merci beaucoup

    le 02/04/2019 à 14h47

  • ngout-50

    ngout-50

    Merci beaucoup

    le 02/04/2019 à 14h47

index.html
script.js
<!DOCTYPE HTML> <html> <head> <title>Exercice rappel 7</title> <script src="script.js"></script> </head> <body> </body> </html>
var ecran = { marque: 'SamSoule', annee: false, resolution: '1920x1080', prix: '400€', reduction: false }