web-dev-qa-db-fra.com

LoDash: Obtenir un tableau de valeurs à partir d'un tableau de propriétés d'objet

Je suis sûr que cela se trouve quelque part dans la documentation LoDash, mais je n'arrive pas à trouver la bonne combinaison.

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'));
134
YarGnawh

Depuis la version v4.x, vous devez utiliser _.map :

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

ainsi, elle correspond à la méthode native Array.prototype.map où vous écririez (syntaxe ES2015):

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

Avant la version 4.x, vous pouviez utiliser _.pluck de la même manière:

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

Avec JS pur:

var userIds = users.map( function(obj) { return obj.id; } );
15
c-smile

Dans la nouvelle version de lodash v4.0.0 _.pluck s'est retiré en faveur de _.map

Ensuite, vous pouvez utiliser ceci:

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

Vous pouvez voir dans Github Changelog

13
iarroyo

Et si vous devez extraire plusieurs propriétés de chaque objet, alors

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