LoDash: รับอาร์เรย์ของค่าจากอาร์เรย์ของคุณสมบัติวัตถุ


161

ฉันแน่ใจว่ามันอยู่ที่ไหนซักแห่งใน LoDash docs แต่ฉันไม่สามารถหาชุดค่าผสมที่เหมาะสมได้

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

คำตอบ:


321

ตั้งแต่เวอร์ชัน v4.x คุณควรใช้_.map:

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

วิธีนี้สอดคล้องกับเมธอดArray.prototype.mapที่คุณจะเขียน (ไวยากรณ์ ES2015):

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

ก่อน v4.x คุณสามารถใช้_.pluckวิธีเดียวกันได้:

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

ขอบคุณมากดีกว่า_.toArray(_.mapValues(users, 'id'))
YarGnawh

1
ฉันจะได้ชื่อพร้อมรหัสฉันหมายความว่าเราจะดึงค่ามากกว่าสองค่าได้อย่างไร
จอห์น

6
@ John หรือคลุมเครือน้อยusers.map(({ id, name }) => ({ id, name })) users.map(user => ({ id: user.id, name: user.name }))เหมือนกันใน _.map(users, ({ id, name }) => ({ id, name }))lodash:
dfsq

@ pdfsq เป็นวิธีแก้ปัญหาที่ดีในขณะที่เพิ่มวัตถุลงในอาร์เรย์เอาต์พุต ขอบคุณ!
Ted Corleone


15

ในเวอร์ชั่น ใหม่ของlodash v4.0.0_.pluckได้ถูกลบออกไป_.map

จากนั้นคุณสามารถใช้สิ่งนี้:

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

คุณสามารถเห็นได้ในGithub Changelog


4

และถ้าคุณต้องการที่จะดึงคุณสมบัติหลายอย่างจากแต่ละวัตถุแล้ว

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

2

วิธีที่ง่ายและรวดเร็วยิ่งกว่าในการรับผ่าน ES6

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

-2

หากคุณใช้จาวาสคริปต์ดั้งเดิมคุณสามารถใช้รหัสนี้ได้ -

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

    return obj.id;
})

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

OP ขอวิธีแก้ปัญหา Lodash อย่างชัดเจน
Ariel Weinberger

-17

สิ่งนี้จะให้สิ่งที่คุณต้องการในป๊อปอัป

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

2
มันวนรอบองค์ประกอบหนึ่งครั้ง อาเรย์เป็นโครงสร้างข้อมูลของดัชนี (es) ที่มีค่าในมันจากบางประเภทข้อมูล (ในตัวอย่างนี้มันเป็นวัตถุ) วัตถุสามารถเข้าถึงได้โดยการประเมินองค์ประกอบในดัชนีของอาร์เรย์ การวนซ้ำเป็นโครงสร้างที่ทำให้เกิดสิ่งนี้
user1789573
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.