Pourquoi est -`_.carte de` retour indéfini lorsque je retourne `false`?
J'ai une fonction qui associe à un tableau avec underscore
. Voici la fonction:
var services = _.map(userCopy.get('services'), function (service) {
if (service.service_selected === true) {
return service;
}
});
Mon problème est que lorsque la conditional === false
, puis-je obtenir undefined
mis en services
. Bien sûr, je peux supprimer le undefined
, mais que c'est moche et je veux juste utiliser map
correctement. Comment puis-je résoudre ce problème?
- parce que si
conditional === false
javascript interpretator ne pas trouver toutes les constructions et aller à l'implicite de l'instruction return qui renvoieundefined
- shamansir.github.io/JavaScript-Jardin/fr/#core.undefined - retournerfalse
vous devez faire explicitement
Vous devez vous connecter pour publier un commentaire.
_.map
utilise ce que la fonction renvoie, pour construire le résultat. Si une fonction ne retourne rien, explicitement, JavaScript renvoieundefined
. C'est pourquoi le résultat de_.map
aundefined
à ce que la condition d'échec.Ce que vous avez réellement besoin, est un
_.filtre
_.filter
accepte une collection et une fonction de prédicat. Il applique la fonction de prédicat pour chaque valeur de la collection et si la fonction renvoie latrue
, cet élément sera inclus dans le résultat, si la fonction renvoie lafalse
, cet élément sera ignoré.Remarque: Vous pouvez réellement utiliser
_.matcher
, avec_.filter
, à l'instar de ceCe sera très utile si vous allez filtre basé sur
service_selected: true
condition plus d'une fois. Si c'est juste une chose une seule fois, puis_.where
indiqué ci-dessous serait une meilleure alternative.Vous pouvez également utiliser
_.où
, qui peuvent retourner les objets seulement si l'objet contient toutes les paires clé-valeur énumérés, à l'instar de ceMaintenant, tous les objets de service seront retournés qui ont
service_selected
valeur de l'attribut commetrue
.Démo:
JS:
HTML:
_.map()
qui permet de revenir à seulement une propriété.service
objet. J'ai inclus une alternative avec_.where
, veuillez vérifier.var missingParams = _.filter(missingParamsArray, Boolean);
Mise à jour de ma réponse... Cela a résolu mon problème
missingParams peut aussi être écrite