LoDash: Dapatkan array nilai dari array properti objek


161

Saya yakin itu ada di suatu tempat di dalam LoDash docs, tapi sepertinya saya tidak dapat menemukan kombinasi yang tepat.

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

Jawaban:


321

Sejak versi v4.x Anda harus menggunakan _.map:

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

cara ini sesuai dengan metode Array.prototype.map asli di mana Anda akan menulis (sintaks ES2015):

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

Sebelum v4.x Anda bisa menggunakan _.pluckcara yang sama:

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

terima kasih jauh lebih baik daripada_.toArray(_.mapValues(users, 'id'))
YarGnawh

1
bagaimana saya bisa mendapatkan nama dengan id, maksud saya bagaimana kita bisa mengambil lebih dari dua nilai?
John

6
@ John users.map(({ id, name }) => ({ id, name }))atau kurang samar users.map(user => ({ id: user.id, name: user.name })). Sama di lodash: _.map(users, ({ id, name }) => ({ id, name })).
dfsq

@dfsq, ini solusi yang baik sambil menambahkan objek ke dalam array output. Terima kasih!
Ted Corleone

17

Dengan JS murni:

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

3
Anda dapat menyederhanakan ini menjadi var userIds = users.map (obj => obj.id);
Kamil Naja

users.map(({id})=>id)
Tingkatkan

15

Dalam rilis baru lodash v4.0.0_.pluck telah dihapus mendukung_.map

Maka Anda dapat menggunakan ini:

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

Anda dapat melihat di Github Changelog


4

Dan jika Anda perlu mengekstrak beberapa properti dari setiap objek, maka

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

2

Cara sederhana dan lebih cepat untuk mendapatkannya melalui ES6

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

-2

Jika Anda menggunakan javascript asli maka Anda dapat menggunakan kode ini -

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

    return obj.id;
})

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

OP secara eksplisit meminta solusi Lodash.
Ariel Weinberger

-17

Ini akan memberi Anda apa yang Anda inginkan dalam pop-up.

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

2
Ini untuk mengulang elemen array satu per satu. Array adalah struktur data indeks dengan nilai di dalamnya dari beberapa tipe data (dalam contoh ini objek). Objek hanya dapat diakses dengan mengevaluasi elemen-elemen dalam indeks array. Loop adalah struktur yang mencapai ini.
user1789573
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.