J'essaie de retourner une valeur dans une fonction de carte avant d'atteindre la valeur de retour par défaut à la fin de la fonction.
J'ai remarqué que la fonction carte ne renvoie pas de valeur pour la fonction validaequence, mais un simple pour La boucle peut. p> Je pense que la fonction de carte retourne fausse avant de toucher la valeur de retour par défaut, true. Je sais que la fonction de carte est exécutée avant d'atteindre la valeur de retour par défaut true, alors pourquoi ne pas renvoyer false? P> p>
6 Réponses :
La carte renvoie false, pour chaque élément de votre section code> variable. Donc, si vous retournez cela, vous vous retrouveriez avec un tableau de faux éléments:
function validateSequence(sequence) { const modifers = ['-', 'm', 'b', 'i']; return sequence.map((seq) => { if(!modifers.includes(seq)) { return false; // want to return false }; }); };
ici: Vous retournez Vous pouvez également vérifier si p>
false code> à partir du
(SEQ) => {} code> Callback fourni et non le
validaeequence code> fonctionne elle-même. Vous ne pouvez pas
break code> à partir de
mappe code> ou
foreach code> méthodes. Donc, un
pour code> boucle est une meilleure option ici. p>
chaque code>
item in séquence code> est présent dans
modifitants code> comme ceci: p>
function validateSequence(sequence) {
const modifers = ['-', 'm', 'b', 'i'];
return sequence.every(letter => modifers.includes(letter))
};
console.log(validateSequence(['Z','e','p']))
console.log(validateSequence(['m', 'i']))
Il y a plusieurs problèmes ici:
mappe () CODE>, ce rappel que vous passez est utilisé pour renvoyer une nouvelle valeur qui va être dans le retour de la fonction mappe () code> fonction . Lorsque vous retournez FALSE dans ce rappel, vous ne revenez pas de validaeequence () code>, vous revenez hors de la section (qui met de la fausse dans le résultat de retour de carte code >). li>
ol> Vous pouvez voir ceci ci-dessous: p> xxx pré> p>
Ce que vous faites réellement consiste à créer un tableau de booléens, mais ne le stocke pas, peu importe. Donc, il finit alors cette tâche, alors Essayez d'utiliser .MAP code> crée un nouveau tableau avec les résultats de la convocation d'une fonction fournie sur chaque élément du tableau appelant. Ce n'est pas un substitut à une boucle.
retourne true code> en bas. P>
.foreach code>, si vous souhaitez itération sur le tableau ou peut-être Utilisation de
.Every code>, qui simplifiera votre logique: p>
Dans votre fonction Je ne sais pas ce que vous voulez le résultat, Mais si vous voulez casser la boucle si certaines conditions passent, cela ne servira pas votre objectif parce que validaesequence code> à la fin, vous avez
retour vrai code> C'est pourquoi vous obtenez toujours
true code>. Si vous souhaitez renvoyer le résultat de
mappe code>, ajoutez
retourner code> à celui-ci.
mapper code> renvoie toujours une valeur, une cartographie individuelle. Si vous souhaitez casser une boucle, vous êtes simple
pour code> boucle. P> p>
La fonction de carte retourne quelque chose, mais vous ne faites rien avec elle.
La carte iTère sur chaque élément de la matrice et crée une nouvelle gamme des valeurs de retour du rappel (dans votre cas, false et non définie. Cela ne s'arrêtera pas tôt à moins que le rappel ne jette une erreur. Ce n'est pas le bon outil pour le travail Utilisez simplement la boucle pour la boucle.