J'ai travaillé sur l'apprentissage de JS et je n'arrive pas à comprendre pourquoi mes valeurs booléennes reviennent toujours vraies ou toujours fausses.
Je crois donc que je comprends les bases de la situation véridique / falsifiée dans JS, mais je n'arrive pas à faire les choses correctement. Je sais qu'il y a des problèmes de type de données (impossible de faire faire des choses différentes à différents types de données).
function lastCharacter(char1, char2) { if (char1[-1] === char2[-1]) { return true; } else { return false; } } console.log(lastCharacter('apple', 'pumpkina'));
Ou
function lastCharacter(char1, char2) { if (char1[-1] === '' && char2[-1] === '') { return true; } else { return false; } } console.log(lastCharacter('apple', 'pumpkine'));
Définissez une fonction lastCharacter
qui accepte deux chaînes comme arguments.
lastCharacter
doit renvoyer true si les deux chaînes se terminent par le même caractère.
Sinon, lastCharacter
doit renvoyer false.
Ils retournent toujours vrai ou toujours faux. Quelqu'un peut-il m'aider?
4 Réponses :
Vous avez besoin d'une méthode différente pour obtenir le dernier caractère d'une chaîne, de préférence avec String # slice
et une valeur négative pour obtenir la dernière. Ensuite, comparez et renvoyez le résultat.
var x = ''; console.log('#' + x.slice(-1) + '#'); console.log('#' + x[x.length -1] + '#');
Une comparaison entre la prise du dernier caractère d'une chaîne vide en utilisant un index -1
qui renvoie undefined
et slice
, qui renvoie une chaîne vide.
function lastCharacter(string1, string2) { return string1.slice(-1) === string2.slice(-1); } console.log(lastCharacter('apple', 'pumpkine'));
string [string.length - 1]
enregistre un appel de fonction :) edit oups sauf qu'il est indéfini
pour les chaînes vides !!
Vous pouvez utiliser la tranche
function lastCharacter(char1, char2) { return char1[char1.length-1] === char2[char2.length-1] } console.log(lastCharacter('apple', 'pumpkina')); console.log(lastCharacter('apple', 'snake'));
Ou vous pouvez simplement accéder au dernier index
function lastCharacter(char1, char2) { return char1.slice(-1) === char2.slice(-1) } console.log(lastCharacter('apple', 'pumpkina')); console.log(lastCharacter('apple', 'snake'));
Il n'y a pas d'index de tableau négatif en JavaScript, au lieu de char1 [-1]
, vous devez utiliser char1 [char1.length - 1]
.
Accès l'un des caractères d'une chaîne (par exemple "abc [1]
) aura toujours une longueur de 1, il ne sera jamais égal à " "
. Votre deuxième fonction a plus de sens .
Aussi
return condition;
est égal à
if(condition) { return true; } else { return false; }
"Un caractère de chaîne aura toujours une longueur de 1, il ne sera jamais égal à" "." o_O
@ninaScholz "abc" [1]
? (oui ou indéfini
)
@NinaScholz Je pense qu'il veut dire "une chaîne qui est le résultat de l'utilisation d'une indexation de tableau valide sur une chaîne plus longue", donc "bonjour" [1]
fait toujours 1 caractère.
La notation [-1]
ne signifie pas implicitement "un caractère à partir de la fin de la chaîne" en JavaScript. Vous pouvez utiliser str [str.length - 1]
. (Si vous prévoyez d'éventuelles chaînes source vides, vous voudrez également vérifier cela pour éviter de vous retrouver avec exactement le même problème.)
Au lieu d'un if / else
qui renvoie soit true
ou false
, renvoyez simplement les résultats de l'expression logique:
return !!(expression);
Les deux === code> les comparaisons renvoient de toute façon
true
ou false
, donc la valeur globale de l'expression doit être l'une de celles-ci. En général, cependant, si vous voulez être absolument sûr que vous vous retrouvez avec un booléen, vous pouvez préfixer une expression avec !!
pour forcer l'évaluation standard JavaScript "true-falsy":
XXX
char1 [-1]
est toujoursindéfini
; il ne vous donne pas le dernier caractère de la chaîne, en particulier.... un de ces pièges quand on vient de python
console.log (char1 [-1], char2 [-1])
Qu'attendez-vous qu'il retourne? Le dernier personnage?