javascript - 尝试将数组映射到对象 - Javascript

标签 javascript angular

我正在使用 Angular 和响应式(Reactive)表单,并且有一个用于访问页面上的项目的权限对象。基本上,我试图将返回的 API 对象数组映射到一组表单组的表单组。我对 formarray 不感兴趣,因为我有很多依赖于数据库中的结构。

但是,尝试绘制此图是最困难的。


初始结构

[
{module_name: "users", access: true, edit: true, delete: false},
{module_name: "documents", access: true, edit: false, delete: false}
]

所需的 Angular 形结构

accessControl: {
users: {access: true, edit: true, delete: false}
documents: {access: true, edit: false, delete: false}
}

最佳答案

使用 Array.prototype.reduce 尝试以下操作;

const input = [{
    module_name: "users",
    access: true,
    edit: true,
    delete: false
  },
  {
    module_name: "documents",
    access: true,
    edit: false,
    delete: false
  }
];

const output = input.reduce((acc, curr) => {
  const { module_name, ...rest } = curr;
  acc[module_name] = rest;
  return acc;
}, {});

console.log(output);

关于javascript - 尝试将数组映射到对象 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63513394/

相关文章:

javascript - 折线 ChartJS 空/空值不打破线

javascript - Accordion 子菜单不会向下滑动

javascript - 如何从 Angular 组件中的变量显示 HTMLElement?

Angular - 如何链接多个调用

angular - 通过类选择器渲染 Angular2 组件

javascript - 与用 span 包围选择的函数相反

javascript - 如何在 TypeScript 中创建 Java 功能接口(interface)默认方法的模拟?

javascript - 触发 fluffy.js

css - 更改 Angular 2 组件的 CSS

angular - 将 @media print 与 Angular 一起使用不起作用