Underscore: Le filtrage sur les objets pourrait renvoyer un objet

Créé le 1 nov. 2011  ·  8Commentaires  ·  Source: jashkenas/underscore

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 ?

change wontfix

Commentaire le plus utile

jk, je viens de voir _.pick ce qui est parfait pour mon cas d'utilisation

Tous les 8 commentaires

+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 :

https://gist.github.com/3430971

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

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

haggholm picture haggholm  ·  8Commentaires

jezen picture jezen  ·  8Commentaires

githublyp picture githublyp  ·  3Commentaires

xiaoliwang picture xiaoliwang  ·  3Commentaires

marcalj picture marcalj  ·  5Commentaires