[英]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並將結果存儲到另一個變量中來完成。
我想要做的就是使用map
, filter
或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
。 盡管可以通過使用reduce
來reduce
此問題,但這只是為了說明可以通過這種方式完成,如果您不了解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.