-1
votes

Fonction de carte ne renvoyant pas de valeur

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. xxx xxx

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?


2 commentaires

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.


6 Réponses :


0
votes

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
    };
  });
};


0 commentaires

3
votes

ici: xxx pré>

Vous retournez 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>

Vous pouvez également vérifier si chaque code> item in séquence code> est présent dans modifitants code> comme ceci: p>

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']))


0 commentaires

1
votes

Il y a plusieurs problèmes ici:

  1. Modificateur est mal orthographié en tant que modificateur.
  2. Les deux exemples que vous avez affichés ne sont pas les mêmes. Dans la version mappe () , ce rappel que vous passez est utilisé pour renvoyer une nouvelle valeur qui va être dans le retour de la fonction mappe () fonction . Lorsque vous retournez FALSE dans ce rappel, vous ne revenez pas de validaeequence () , vous revenez hors de la section (qui met de la fausse dans le résultat de retour de carte ).

    Vous pouvez voir ceci ci-dessous: xxx


0 commentaires

0
votes

.MAP 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.

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 retourne true en bas.

Essayez d'utiliser .foreach , si vous souhaitez itération sur le tableau ou peut-être Utilisation de .Every , qui simplifiera votre logique: xxx


0 commentaires

0
votes

Dans votre fonction validaesequence à la fin, vous avez retour vrai C'est pourquoi vous obtenez toujours true . Si vous souhaitez renvoyer le résultat de mappe , ajoutez retourner à celui-ci. xxx

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 mapper renvoie toujours une valeur, une cartographie individuelle. Si vous souhaitez casser une boucle, vous êtes simple pour boucle.


0 commentaires

0
votes

vous pouvez faire ce xxx


0 commentaires