我有一个对象数组,它有两个字段 id 和操作权限的类型
const array=[
{view: false, id: 1},
{create: false, id: 1},
{read: false, id: 1},
{update: false, id: 1},
{delete: false, id: 1},
{view: false, id: 2},
{create: false, id: 2},
{read: false, id: 2},
{update: false, id: 2},
{delete: false, id: 2},
]
我想将其转换为以下数组:
const permissions=[
{
id: 1,
view: false,
read: false,
create: false,
delete:false,
update:false
},
{
id: 2,
view: false,
read: false,
create: false,
delete:false,
update:false
}
]
最佳答案
您可以使用 Array#reduce
遍历数组在更新 Map
时其中 id
是 key
,其结果对象是 value
。
最后,您会将每个 id
的分组对象作为此映射中的 values
:
const array = [
{view: false, id: 1},
{create: false, id: 1},
{read: false, id: 1},
{update: false, id: 1},
{delete: false, id: 1},
{view: false, id: 2},
{create: false, id: 2},
{read: false, id: 2},
{update: false, id: 2},
{delete: false, id: 2},
];
const res = [...
array.reduce((map, { id, ...elem }) =>
map.set(id, { ...(map.get(id) || { id }), ...elem })
, new Map)
.values()
];
console.log(res);
关于javascript - 按 Id 对数组中的对象进行分组 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68455739/