LoDash: obtenga una matriz de valores de una matriz de propiedades de objeto


161

Estoy seguro de que está en algún lugar dentro de los documentos de LoDash, pero parece que no puedo encontrar la combinación correcta.

var users = [{
      id: 12,
      name: Adam
   },{
      id: 14,
      name: Bob
   },{
      id: 16,
      name: Charlie
   },{
      id: 18,
      name: David
   }
]

// how do I get [12, 14, 16, 18]
var userIds = _.map(users, _.pick('id'));

Respuestas:


321

Desde la versión v4.x deberías usar _.map:

_.map(users, 'id'); // [12, 14, 16, 18]

de esta manera corresponde al método nativo Array.prototype.map donde escribirías (sintaxis ES2015):

users.map(user => user.id); // [12, 14, 16, 18]

Antes de v4.x podría usar _.pluckla misma manera:

_.pluck(users, 'id'); // [12, 14, 16, 18]

gracias mucho mejor que_.toArray(_.mapValues(users, 'id'))
YarGnawh

1
¿Cómo puedo obtener el nombre con id? Quiero decir, ¿cómo podemos obtener más de dos valores?
John

66
@John users.map(({ id, name }) => ({ id, name }))o menos críptico users.map(user => ({ id: user.id, name: user.name })). Igual en lodash: _.map(users, ({ id, name }) => ({ id, name })).
dfsq

@dfsq, es una buena solución al agregar objetos a la matriz de salida. ¡Gracias!
Ted Corleone

17

Con puro JS:

var userIds = users.map( function(obj) { return obj.id; } );

3
Puede simplificar esto en var userIds = users.map (obj => obj.id);
Kamil Naja

Sube a mi nivelusers.map(({id})=>id)
Artur Tagisow


4

Y si necesita extraer varias propiedades de cada objeto, entonces

let newArr = _.map(arr, o => _.pick(o, ['name', 'surname', 'rate']));

2

Forma simple e incluso más rápida de obtenerlo a través de ES6

let newArray = users.flatMap(i => i.ID) // -> [ 12, 13, 14, 15 ]

-2

Si está utilizando JavaScript nativo, puede usar este código:

let ids = users.map(function(obj, index) {

    return obj.id;
})

console.log(ids); //[12, 14, 16, 18]

El OP solicitó explícitamente una solución de Lodash.
Ariel Weinberger

-17

Esto te dará lo que quieres en una ventana emergente.

for(var i = 0; i < users.Count; i++){
   alert(users[i].id);  
}

2
Es recorrer el conjunto un elemento a la vez. Una matriz es una estructura de datos de índice (es) con valores de algún tipo de datos (en este ejemplo, son objetos). Solo se puede acceder a los objetos evaluando los elementos en el índice de la matriz. El bucle es la estructura que logra esto.
user1789573
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.