Quelle est la différence entre les transformer et de les réduire en lodash
Autres que de dire "transformer est une alternative plus puissante pour réduire", je ne trouve pas de documentation de l'quelles sont les différences. Quelles sont les différences entre les transformer et de les réduire en lodash (Autres que 25% plus lent)?
Vous devez vous connecter pour publier un commentaire.
J'aime à plonger dans le code source avant de me tirer dans les services publics. Pour lo-dash cela peut être difficile car il ya une tonne d'abstraction des fonctions internes dans tous les services publics.
Donc les différences évidentes sont:
si vous êtes utilisé pour le trait),
_.transform
deviner si vous voulezun tableau ou un objet en réduire fera l'accumulateur le point de départ de la collection.
Exemple, le tableau ou l'objet de la carte via
transform
:Rapport à réduire (note, vous devez connaître le type d'entrée!)
Donc tout à réduire le ci-dessous permettra de calculer la somme d'un tableau, cela ne serait pas possible avec les transformations que
a
sera un tableau.transform
et l'accumulateur ne peut pas changer la valeur (c'est à dire qu'il sera toujours le même tableau). Je dirais que c'est le plus grand avantage de la fonction que j'ai souvent oublié de retour de l'accumulateur à l'aide de la réduire.Par exemple, si vous vouliez convertir un tableau de dictionnaire des valeurs avec les réduire, on peut écrire le code suivant:
Alors que de transformation, nous pouvons écrire cela très bien sans avoir besoin de retourner l'accumulateur comme en réduire
Dans l'ensemble, je dirais réduire est une méthode plus flexible, que vous avez plus de contrôle sur l'accumulateur, mais transformer peut être utilisé pour écrire le code équivalent pour certains cas plus simple de style.
_.transform
est mieux que_.each
quand vous en avez besoin pour créer un nouveau tableau/objet, parce que vous n'avez pas à déclarer une variable avant de l'itération. Je dois mentionner_.map
trop, mais il n'y a pas de possibilité conditionnelle, ajouter des éléments à la collection._.transform
est également chainable, tandis que_.reduce
ne l'est pas._.transform
github.com/lodash/lodash/issues/1444transformation travaille sur des objets, de réduire de ne pas