Выбрать старый массив по ключу и переименовать ключ в новом массиве - Lodash
У меня есть массив объектов. я хочу pick
массив на основе ключа viewerId
и создайте новый массив. Затем переименуйте viewerId
ключ по имени userId
const viewerList = [{
"id": 1,
"viewerId": 5,
"status": true
},
{
"id": 2,
"viewerId": 8,
"status": true
},
{
"id": 3,
"viewerId": 6,
"status": true
},
{
"id": 4,
"viewerId": 9,
"status": true
}
]
var result = []
_.each(viewerList, (o) => {
result.push(_.pick(o, 'viewerId'))
})
result = result.map(function(item) {
return {
userId: item.viewerId
}
});
console.log(result)
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
Я делаю это в два этапа. Можно ли это оптимизировать
3 ответа
Вы можете сделать следующее в одном выражении:
const viewerList = [{
"id": 1,
"viewerId": 5,
"status": true
},
{
"id": 2,
"viewerId": 8,
"status": true
},
{
"id": 3,
"viewerId": 6,
"status": true
},
{
"id": 4,
"viewerId": 9,
"status": true
}
]
// The same logic in a single statement
var result = viewerList.map(function(item) {
return { userId : item.viewerId}
})
console.log(result)
Это работает на всех браузерах ie9 и выше. Для получения дополнительной информации о .map()
Используемая функция, смотрите это
Для этого, используя map
будет правильным способом справиться с этим, поскольку вы преобразуете существующие данные.
Поэтому вам даже не нужен лодаш.
Вы можете воспользоваться деструктуризацией и переименованием на одном шаге:
const result = viewerList.map(({ viewerId: userId }) => ({ userId }))
Вы можете использовать это
viewerList.map(({viewerId}) => ({userId: viewerId}))
или в Лодаш
_.map(viewerList, ({viewerId}) => ({userId: viewerId}))