next.js Javascript合并对象

enyaitl3  于 2022-12-12  发布在  Java
关注(0)|答案(2)|浏览(186)

我正在尝试将从接收到的对象转换为后端使用的格式。

{
    'User.permissions.user.view.dashboard': true,
    'Admin.permissions.user.view.dashboard': true,
    'Admin.permissions.admin.view.dashboard': true,
}

键的第一部分(User,Admin)是角色名,其余部分是角色。

{
    'User': [
        'permissions.user.view.dashboard'
    ],
    'Admin': [
        'permissions.user.view.dashboard',
        'permissions.user.admin.dashboard;
    ]
}

到目前为止,我设法得到了这个结果,但我不知道如何合并这些结果
第一次

7rfyedvj

7rfyedvj1#

const roleData = {
    'User.permissions.user.view.dashboard': true,
    'Admin.permissions.user.view.dashboard': true,
    'Admin.permissions.admin.view.dashboard': true,
};

const mappedData = Object.keys(roleData).reduce((acc, entry) => {
  const dotIndex = entry.indexOf('.');
  const parts = [entry.slice(0,dotIndex), entry.slice(dotIndex+1)];
  
  acc[parts[0]] ??= [];
  acc[parts[0]].push(parts[1]);
  return acc;
}, {});

console.log(mappedData);
1zmg4dgp

1zmg4dgp2#

可以使用reduce函数:

const result = permissions.reduce((acc, cur) => {
  const key = Object.keys(cur)[0]
  if (acc[key]) {
    acc[key] = [...acc[key], cur[key]]
  } else {
    acc[key] = [cur[key]]
  }
  return acc
}, {})

相关问题