recherche

Maison  >  Questions et réponses  >  le corps du texte

Question du débutant : pourquoi cette boucle for renvoie-t-elle false ?

Je fais quelques devoirs en JS et j'ai écrit une fonction qui compare la fin d'une chaîne (str) et renvoie vrai ou faux si elle correspond à la chaîne "cible" (cela pourrait être fait plus facilement, mais celui-ci, je choisis d'une manière si chaotique) :

function confirmEnding(str, target) {
  let valid = true;
  
console.log(str.length);
  console.log(target.length);

  for(let i = 0; i < target.length; i++){
    if (str.substring(str.length - (i+1)) == target.substring(target.length - (i+1))){
      valid = true;
    }
    else{
      valid = false;
    }
  }
  
  console.log(valid);
  return valid;

}

Donc, cette fonction fonctionne, mais en y regardant, je ne comprends pas pourquoi...

Si je cours

confirmEnding("Testing123", "tin5123");

Il me semble qu'il devrait renvoyer true, mais la boucle for ne modifie pas la valeur de la variable "valid" en true après la quatrième itération de la boucle for ? (La boucle for ne devrait-elle pas également parcourir 5, 6 et 7 et renvoyer « vrai » pour obtenir « valide » ?)

La réponse que j'ai obtenue d'OpenAI est que la fonction vérifie si "target" correspond à la fin de "str". comment ? Je ne vois nulle part que j'ai donné des instructions spécifiques pour ce faire...

Comment une fonction décide-t-elle quelle valeur de la variable de retour est « valide » ? Est-ce qu'il parcourt tout et renvoie uniquement « if : valid = true » si ALL i est vrai ? Pourquoi?

Merci

P粉022723606P粉022723606491 Il y a quelques jours471

répondre à tous(1)je répondrai

  • P粉575055974

    P粉5750559742023-09-09 10:28:32

    Ça marche parce que ça commence par la fin

    function confirmEnding(str, target) {
      let valid = true;
    
      for(let i = 0; i < target.length; i++){
        console.log(str.substring(str.length - (i+1)), target.substring(target.length - (i+1)))
        if (str.substring(str.length - (i+1)) == target.substring(target.length - (i+1))){
          valid = true;
        }
        else{
          valid = false;
        }
      }
      
      return valid;
    
    } 
    
    console.log(confirmEnding("Testing123", "tin5123"));

    Pourquoi s'embêter avec le bouclage ?

    function confirmEnding(str, target) {
      return str.endsWith(target)
    } 
    
    console.log(confirmEnding("Testing123", "tin5123"));

    répondre
    0
  • Annulerrépondre