es6:隐藏对象到数组

Ali*_*mjo -1 javascript ecmascript-6

我有记录:

 let a =  [{
            "resource" : "user",

            "permissions" : [ 
                "add", 
                "list", 
                "verify", 
                "add-credit", 
                "deactive", 
                "trash", 
                "edit", 
                "impersonate", 
                "active"
            ]
        }, 
        {
            "resource" : "company",

            "permissions" : [ 
                "list", 
                "verify", 
                "pending", 
                "reject"
            ]
        }];
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

{"user":[ 
                "add", 
                "list", 
                "verify", 
                "add-credit", 
                "deactive", 
                "trash", 
                "edit", 
                "impersonate", 
                "active"
         ], 
        "company" : [ 
                "list", 
                "verify", 
                "pending", 
                "reject"
            ]
     };
Run Code Online (Sandbox Code Playgroud)

这可以通过自定义函数完成,以将结果存储并存储到另一个变量.

我要的是做到这一点的map,filter或在ES6的JavaScript中的任何新功能.

我试过用map.

 a.map(function (res){return res.resource})
Run Code Online (Sandbox Code Playgroud)

gur*_*372 6

使用 reduce

var output = a.reduce( ( acc, c ) => {
  acc[ c.resource ] = c.permissions;
  return acc; //return accumulator
} ,{}) // initialize accumulator to {}
Run Code Online (Sandbox Code Playgroud)

说明

  • 使用reduce迭代和初始化蓄电池 acc空对象 {}.
  • 对于c数组中的每个项目a
    • c.resource值(用户公司)作为属性分配给acc(累加器)和该属性的值c.permissions
    • return蓄能器 acc.