Question du débutant : pourquoi cette boucle for renvoie-t-elle false ?
P粉022723606
P粉022723606 2023-09-08 17:31:55
0
1
351

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粉022723606
P粉022723606

répondre à tous (1)
P粉575055974

Ç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"));
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!