Underscore: El filtrado de objetos podría devolver un objeto

Creado en 1 nov. 2011  ·  8Comentarios  ·  Fuente: jashkenas/underscore

Hola,

Aquí hay un caso de uso común para el filtro. Dado

a = {35: true, 45: true, 55: false}

a uno le gustaría filtrar y recuperar solo pares cuyo valor es verdadero:

_.filter(a, function(val, key) {
  val === true;
});
// => {35: true, 45: true}

Actualmente, funciones como filter push(value) para que uno obtenga una matriz.

¿Hay alguna manera fácil de lograr esto con una solución y, de no ser así, consideraría cambiar el tipo de devolución en función de si proporcionamos un objeto o una lista?

change wontfix

Comentario más útil

jk, acabo de ver _.pick que es perfecto para mi caso de uso

Todos 8 comentarios

+1

Solo necesitaba lo mismo y este problema fue el segundo Google git que obtuve al buscar. El único problema de hacer que _.filter en objetos devuelva objetos es la compatibilidad con versiones anteriores...

filter es una función que se origina en ES5... y ciertamente no queremos romper la compatibilidad básica con la especificación.

Para abordar el panorama general: todas las funciones enumerables de Underscore.js pueden tomar objetos o matrices, y todas devuelven matrices. Romper la consistencia aquí tendría que hacerse para todas las funciones a la vez, no solo para una de ellas. La API actual le permite componer funciones de subrayado sin tener que preocuparse por los tipos de entrada.

Agregué funciones de filtro y rechazo a esta combinación de funciones de mapa de seguimiento para objetos con persistencia de clave/valor:

https://gist.github.com/3430971

+1

+1 ¿Podrían agregar _.filterObj (etc) uno a la vez, similar a _.mapObj ?

jk, acabo de ver _.pick que es perfecto para mi caso de uso

@jtfairbank exactamente lo que necesito y probablemente lo que la mayoría de las personas necesitan cuando vienen aquí buscando 'filtrar' un objeto y crear un objeto.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

jdalton picture jdalton  ·  6Comentarios

afranioce picture afranioce  ·  8Comentarios

danilopolani picture danilopolani  ·  5Comentarios

arieljake picture arieljake  ·  4Comentarios

acl0056 picture acl0056  ·  5Comentarios