Salut,
Voici un cas d'utilisation courant pour le filtre. Étant donné
a = {35: true, 45: true, 55: false}
on voudrait filtrer et récupérer uniquement les paires dont la valeur est vraie :
_.filter(a, function(val, key) {
val === true;
});
// => {35: true, 45: true}
Actuellement, des fonctions telles que filter push(value) permettent d'obtenir un tableau.
Existe-t-il un moyen simple d'y parvenir avec une solution de contournement, et si ce n'est pas le cas, envisageriez-vous de changer le type de retour selon que nous fournissons un objet ou une liste ?
+1
J'avais juste besoin de la même chose et ce problème était le 2ème Google git que j'ai eu lors de la recherche. Le seul problème de faire en sorte que _.filter sur les objets renvoient des objets est la rétrocompatibilité...
filter
est une fonction qui trouve son origine dans ES5 ... et nous ne voulons certainement pas rompre la compatibilité de base avec la spécification.
Pour aborder la situation dans son ensemble : toutes les fonctions énumérables Underscore.js peuvent prendre des objets ou des tableaux, et tous les tableaux de retour. Briser la cohérence ici devrait être fait pour toutes les fonctions à la fois, pas seulement pour l'une d'entre elles. L'API actuelle vous permet de composer des fonctions Underscore sans avoir à vous soucier des types d'entrée.
J'ai ajouté des fonctions de filtrage et de rejet à ces fonctions de carte de suivi de l'essentiel du mixage pour les objets avec persistance clé/val :
+1
+1 Pourriez-vous les gars ajouter _.filterObj
(etc) un à la fois, semblable à _.mapObj
?
jk, je viens de voir _.pick
ce qui est parfait pour mon cas d'utilisation
@jtfairbank exactement ce dont j'ai besoin et probablement ce dont la plupart des gens ont besoin lorsqu'ils viennent ici pour "filtrer" un objet et créer un objet.
Commentaire le plus utile
jk, je viens de voir
_.pick
ce qui est parfait pour mon cas d'utilisation