簡體   English   中英

es6:隱式數組對象

[英]es6 : covert object to array

我有記錄:

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

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

            "permissions" : [ 
                "list", 
                "verify", 
                "pending", 
                "reject"
            ]
        }];

我想將其轉換為:

{"user":[ 
                "add", 
                "list", 
                "verify", 
                "add-credit", 
                "deactive", 
                "trash", 
                "edit", 
                "impersonate", 
                "active"
         ], 
        "company" : [ 
                "list", 
                "verify", 
                "pending", 
                "reject"
            ]
     };

這可以通過自定義函數進行foreach並將結果存儲到另一個變量中來完成。

我想要做的就是使用mapfilter或es6中javascript的任何新功能。

我嘗試使用map

 a.map(function (res){return res.resource})

使用reduce

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

說明

  • 使用reduce 迭代並將 累加器 acc 初始化空對象 {}
  • 對於數組a中的每一項c
    • c.resource值( 用戶公司 )作為屬性分配給acc (累加器),並且該屬性的值是c.permissions
    • return 累加器 acc

盡管可以通過使用reducereduce此問題,但這只是為了說明可以通過這種方式完成,如果您不了解reduce工作原理或不想使用reduce ,則可以更好地理解。

 let a = [{ "resource" : "user", "permissions" : [ "add", "list", "verify", "add-credit", "deactive", "trash", "edit", "impersonate", "active" ] }, { "resource" : "company", "permissions" : [ "list", "verify", "pending", "reject" ] }]; var res = {}; a.forEach((obj)=>{ res[obj.resource] = obj.permissions; }); console.log(res); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM