LoDash: Отримайте масив значень з масиву властивостей об'єкта


161

Я впевнений, що він знаходиться десь у документах LoDash, але я не можу знайти правильну комбінацію.

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
як я можу отримати ім'я за допомогою id, я маю на увазі, як ми можемо отримати більше двох значень?
Іван

6
@John users.map(({ id, name }) => ({ id, name }))або менш дурний users.map(user => ({ id: user.id, name: user.name })). Те саме в лодаш : _.map(users, ({ id, name }) => ({ id, name })).
dfsq

@dfsq, це гарне рішення при додаванні об'єктів у вихідний масив. Дякую!
Тед Корлеоне


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

Якщо ви використовуєте нативний javascript, то ви можете використовувати цей код -

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

    return obj.id;
})

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

ОП явно попросила рішення Лодаша.
Аріель Вайнбергер

-17

Це дасть вам те, що ви хочете у спливаючому вікні.

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

2
Це провести цикл через масив по одному елементу. Масив - це структура даних індексів (ів) зі значеннями в ній з деякого типу даних (у цьому прикладі це об'єкти). Доступ до об'єктів можна отримати лише шляхом оцінки елементів в індексі масиву. Цикл - це структура, яка цього досягає.
користувач1789573
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.