我想使用lodash 2.4.2将此数组转换为另一个数组:
权限将映射到角色中。我们不接触其他房产。
自:
{
"items": [
{
"_id": "admin",
"authorities": [
{
"name": "ROLE_ADMIN"
}
]
},
{
"_id": "user",
"authorities": [
{
"name": "ROLE_USER"
}
]
}
]
}
到这个数组
{
"items": [
{
"_id": "admin",
"roles": [
"ROLE_ADMIN"
]
},
{
"_id": "user",
"role": [
"ROLE_USER"
]
}
]
}
你可以帮我吗?
答案 0 :(得分:0)
正如charlietfl所述,在以后的帖子中,您必须提供代码示例,以便您解决问题。
这是解决方案,非常简单:
const initialObject = {
"items": [
{
"_id": "admin",
"authorities": [
{
"name": "ROLE_ADMIN"
}
]
},
{
"_id": "user",
"authorities": [
{
"name": "ROLE_USER"
}
]
}
]
}
const processedObject = _
.map(initialObject.items, item => {
return {
_id: item._id,
roles: _.map(item.authorities, a => a.name)
}
})
答案 1 :(得分:0)
这只是关键名称的重新映射。出于性能原因,我会尽量避免使用delete
。您可以在此benchmark中看到性能差异,如果稍后对象被保留,则只使用“删除”。
for (var item of items) {
item.roles = item.authorities
// possible but slow
// delete item.authorities
item.authorities = undefined
}
编辑:@vanelizarov代码甚至更好,如果你想避免对象本身的变异和清洁属性。但它也慢了。
vanelizarov code: x 5,025,370 ops/sec ±1.30% (90 runs sampled)
my code: x 31,583,811 ops/sec ±0.95% (92 runs sampled)