javascript - 将字符串更改为数组

标签 javascript json

我检索以下字符串值数组

[
"Module1.resource1.create",
"Module1.resource1.read",
"Module1.resource1.update",
"Module1.resource1.delete",
...
"Module1.resourceN.create",
"Module1.resourceN.read",
"Module1.resourceN.update",
]

我想把它们改成这样的json格式

{"privileges": {
    "Module1": {
      "resource1": {
          "create": true,
          "read": true,
          "update": true,
          "delete": true,
      },
...
      "resourceN":  {
          "create": true,
          "read": true,
          "update": true,
    }
  }
 }
}

我能想到的就是为每个字符串运行一个循环,使用 split(".") 然后以某种方式将其更改为 json 对象。我遇到的问题是 json 不是一个简单的 key: value,它更像是一个 key: object: object: object: value 如果这有意义的话。 ..

我很感激在正确方向上的插入。

干杯

最佳答案

您可以使用 Array#reduce方法:

const result = { privileges: {} };
items.reduce((ret, el) => {
   // Split the array elements and use destructuring assignment syntax for
   // creating constants
   const [module, resource, verb] = el.split('.');
   // check if privileges[module] property exists. If not, define it as an empty object.
   if (!ret[module]) ret[module] = {};
   // follows the previous line's logic for resources!
   if (!ret[module][resource]) ret[module][resource] = {};
   ret[module][resource][verb] = true;
   return ret;
}, result.privileges);

Demo | Destructuring assignment syntax

关于javascript - 将字符串更改为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52100309/

相关文章:

javascript - 可将列表项拖动到菜单中的标题

javascript - 如何使用querySelectorAll

java - 在 spring restful webservice 中返回 JsonObject

c# - 将 ASP.NET Repeater 控件与 List<T> 对象数据一起使用

java - 适用于任何对象的自定义 JSON 序列化包装器

javascript - 如何在 fetch api 中处理空响应

javascript - 在 Vue.Js 中的 v-text 中附加多个字段

javascript - 如何消除父/子依赖?

javascript - 如果同时定义了 onsubmit 事件和 onsubmit 属性怎么办?

javascript - 寻找更好的解决方案