最近遇到了一个问题,来自于下面的一段代码:
let { [key]: id, ...rest } = obj
在这篇文章里,我想解释下它是在做什么以及它是如何工作的。
提醒:因为它非常的晦涩难懂,所以我最终并没有以这种方式实现去做,不过它是非常有趣的,值得去我们去了解。
如何遇到这个问题的
假如我们有以下数组
const users = [ { name: 'Michael', group: 1 }, { name: 'Lukas', group: 1 }, { name: 'Travis', group: 2 },]
{ name: 'Michael', group: 1 },
{ name: 'Lukas', group: 1 },
{ name: 'Travis', group: 2 },
]
我们把它按照 group
字段进行分组映射如下:
{ '1': [ { name: 'Michael' }, { name: 'Lukas' }, ], '2': [ { name: 'Travis' }, ]}'1': [
{ name: 'Michael' },
{ name: 'Lukas' },
],
'2': [
{ name: 'Travis' },
]
}
如何从 users
对象中删除 group
属性,实现上述效果?
我们可以利用如下方法:
users.reduce((result, user) => { const { group, ...userData } = user result[group] = result[group] || [] result[group].push(userData) return result}, {})
const { group, ...userData } = user
result[group] = result[group] || []
result[group].push(userData)