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
Как я могу получить имя с идентификатором, я имею в виду, как мы можем получить более двух значений?
Джон

6
@ Джон 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 ]


-17

Это даст вам то, что вы хотите во всплывающем окне.

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

2
Это цикл по массиву по одному элементу за раз. Массив - это структура данных индекса (ов) со значениями в нем из некоторого типа данных (в данном примере это объекты). Доступ к объектам возможен только путем оценки элементов в индексе массива. Цикл - это структура, которая достигает этого.
user1789573
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.