LoDash: Bir nesne özellikleri dizisinden bir değerler dizisi al


161

Eminim LoDash belgelerinin içinde bir yerde, ama doğru kombinasyonu bulamıyorum.

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

Yanıtlar:


321

Sürüm v4.x'ten bu yana şunları kullanmalısınız _.map:

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

bu şekilde yazacağınız yerel Array.prototype.map yöntemine karşılık gelir (ES2015 sözdizimi):

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

V4.x'ten önce _.pluckaynı şekilde kullanabilirsiniz :

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

thanks _.toArray(_.mapValues(users, 'id'))
very

1
id ile nasıl isim alabilirim, yani ikiden fazla değeri nasıl alabiliriz?
John

6
@John users.map(({ id, name }) => ({ id, name }))veya daha az şifreli users.map(user => ({ id: user.id, name: user.name })). Aynı içinde lodash: _.map(users, ({ id, name }) => ({ id, name })).
dfsq

@dfsq, çıktı dizisine nesne eklerken iyi bir çözümdür. Teşekkürler!
Ted Corleone

17

Saf JS ile:

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

3
Bunu var userIds = users.map (obj => obj.id) şeklinde basitleştirebilirsiniz;
Kamil Naja

Benim seviyesini Alusers.map(({id})=>id)
Artur Tagisow

15

Yeni lodash sürümünde v4.0.0 _.pluck lehine kaldırıldı_.map

Sonra bunu kullanabilirsiniz:

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

Github Changelog'da görebilirsiniz


4

Ve her nesneden birkaç özellik çıkarmanız gerekiyorsa,

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

2

ES6 ile elde etmenin basit ve daha hızlı yolu

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

-2

Yerel javascript kullanıyorsanız, bu kodu kullanabilirsiniz -

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

    return obj.id;
})

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

OP açıkça bir Lodash çözümü istedi.
Ariel Weinberger

-17

Bu size bir açılır pencerede ne istediğinizi verecektir.

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

2
Bir seferde bir öğe dizi arasında döngü yapmaktır. Dizi, bazı veri türlerinden (bu örnekte nesneler) içindeki değerlere sahip dizin (ler) in veri yapısıdır. Nesnelere yalnızca dizinin dizinindeki öğeler değerlendirilerek erişilebilir. Döngü bunu başaran yapıdır.
user1789573
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.