Partage
  • Partager sur Facebook
  • Partager sur Twitter

Projet du pendu React

    20 janvier 2019 à 14:06:59

    Bonjour a tous,

    J'ai un petit soucis dans le projet du pendu dans le Cours de React.

    Je ne vois pas vraiment comment faire pour qu'il transforme les lettres qui n'ont pas encore été choisi en underscore.

    J'ai donc un state qui sauvegarde le mot sélectionné et les lettres déjà rentré, et le mot qui est affiché dans le dom (Donc _ _ _ _ _ _ )

    Maintenant la question est comment je fais pour que il parcoure tout et change le _ en la lettre correspondante si elle est rentrée?

    • Partager sur Facebook
    • Partager sur Twitter
      21 janvier 2019 à 0:08:47

      Tu dois faire une boucle sur la lettre finale, je te fais un exemple à toi de l'adapter :

      const stateFinalWord = "girouette" // Mot final
      let stateCurrentWordV1 = "_________" // Valeur actuel de l'utilisateur
      let userEntry = "e" // Il rentre la lettre "e"
      
      /**
       * V1:
       * Renseigne toi sur les fonctions que j'ai utilisés ici, bien sur tu peux faire plus simple, c'est juste pour
       * Te montrer. Je te fais une version 2 plus simple
       */
      stateCurrentWordV1 = stateFinalWord.split('').reduce((accumulator, currentValue, index) => {
        if (userEntry === currentValue) {
          accumulator[index] = currentValue
          return accumulator
        } else {
          return accumulator
        }
      }, stateCurrentWordV1.split('')).join('')
      console.log("V1: " + stateCurrentWordV1)
      
      /**
       * V2:
       */
      let stateCurrentWordV2 = "_________"
      userEntry = "t"
      stateCurrentWordV2 = stateCurrentWordV2.split('').map((value, index) => {
        const finalLetter = stateFinalWord.split('')[index];
        if (finalLetter === userEntry) {
          return finalLetter
        } else {
          return value
        }
      }).join('')
      console.log("V2: " + stateCurrentWordV2)
      



      • Partager sur Facebook
      • Partager sur Twitter
        21 janvier 2019 à 16:13:24

        fasteel a écrit:

        Tu dois faire une boucle sur la lettre finale, je te fais un exemple à toi de l'adapter :

        const stateFinalWord = "girouette" // Mot final
        let stateCurrentWordV1 = "_________" // Valeur actuel de l'utilisateur
        let userEntry = "e" // Il rentre la lettre "e"
        
        /**
         * V1:
         * Renseigne toi sur les fonctions que j'ai utilisés ici, bien sur tu peux faire plus simple, c'est juste pour
         * Te montrer. Je te fais une version 2 plus simple
         */
        stateCurrentWordV1 = stateFinalWord.split('').reduce((accumulator, currentValue, index) => {
          if (userEntry === currentValue) {
            accumulator[index] = currentValue
            return accumulator
          } else {
            return accumulator
          }
        }, stateCurrentWordV1.split('')).join('')
        console.log("V1: " + stateCurrentWordV1)
        
        /**
         * V2:
         */
        let stateCurrentWordV2 = "_________"
        userEntry = "t"
        stateCurrentWordV2 = stateCurrentWordV2.split('').map((value, index) => {
          const finalLetter = stateFinalWord.split('')[index];
          if (finalLetter === userEntry) {
            return finalLetter
          } else {
            return value
          }
        }).join('')
        console.log("V2: " + stateCurrentWordV2)
        


        Merci de ta réponse, je vais essayer de l'adapter.

        Voici celui qui est fourni par le prof, quelqu'un sait m'expliquer son fonctionnement?

        function computeDisplay(phrase, usedLetters) {
        return phrase.replace(/\w/g,
        (letter) => (usedLetters.has(letter) ? letter : '_')
        )
        }





        • Partager sur Facebook
        • Partager sur Twitter
          21 janvier 2019 à 20:25:51

          Ton prof veux que tu utilise une regex, fait comme ça alors ;) j'avoue que je suis une merde en regex... C'est pour ça que mon approche est plus "algorithmique". Cependant tu as besoin de plusieurs choses pour comprendre ce petit bout de code ;) d'abord la fonction replace, ensuite la regex utilisé. Pour tester les regex tu peux regarder ici https://regex101.com/ dans ton cas tu peux tester comment "\w" réagit sur une chaîne de caractère. Essaie vraiment de bien comprendre. Si tu ne comprend pas je serais là ;) 

          • Partager sur Facebook
          • Partager sur Twitter

          Projet du pendu React

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown