我有一个对象数组。我希望基于键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>
我分两步执行此操作。 可以优化
答案 0 :(得分:2)
您可以在一个语句中执行以下操作:
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)
此功能适用于所有浏览器(即9及更高版本)。有关正在使用的.map()
函数的更多信息,see this
答案 1 :(得分:1)
您可以使用
viewerList.map(({viewerId}) => ({userId: viewerId}))
或在lodash
_.map(viewerList, ({viewerId}) => ({userId: viewerId}))
答案 2 :(得分:1)
为此,在转换现有数据时,使用map
是处理它的正确方法。
因此,您甚至不需要 lodash 。
您可以在同一步骤中利用解构和重命名:
const result = viewerList.map(({ viewerId: userId }) => ({ userId }))