[英]Converting json object to an array
如何使用lodash
或 javascript 轉換以下lodash
:
[
{
"roleId": "1",
"name": "Superadmin"
"permissions": [
{
"permissionId": "1",
"action": "Remove"
}
]
},
"id": "2",
"name": "Administrator",
"permissions": [
{
"permissionId": "1",
"action": "Remove"
},
{
"permissionId": "2",
"action": "Create"
},
{
"permissionId": "3",
"action": "Read"
}
]
]
對此:
{
Superadmin: ['Remove'],
Administrator: ['Remove', 'Create', 'Read']
}
帶有Array#forEach
和Array#map
提案。
var array = [{ "roleId": "1", "name": "Superadmin", "permissions": [{ "permissionId": "1", "action": "Remove" }] }, { "id": "2", "name": "Administrator", "permissions": [{ "permissionId": "1", "action": "Remove" }, { "permissionId": "2", "action": "Create" }, { "permissionId": "3", "action": "Read" }] }], object = {}; array.forEach(function (a) { object[a.name] = a.permissions.map(function (b) { return b.action; }); }); document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
您可以使用reduce
和map
var temp = [{
"roleId": "1",
"name": "Superadmin",
"permissions": [{
"permissionId": "1",
"action": "Remove"
}]
}, {
"id": "2",
"name": "Administrator",
"permissions": [{
"permissionId": "1",
"action": "Remove"
}, {
"permissionId": "2",
"action": "Create"
}, {
"permissionId": "3",
"action": "Read"
}]
}]
temp.reduce((result,obj)=>{
result[obj.name] = obj.permissions.map(x=>x.action)
return result;
},{});
從評論中看到格式化和有效的 json,這里有一些你可以使用的東西。
var arr = [{
"roleId": "1",
"name": "Superadmin",
"permissions": [{
"permissionId": "1",
"action": "Remove"
}]
}, {
"id": "2",
"name": "Administrator",
"permissions": [{
"permissionId": "1",
"action": "Remove"
}, {
"permissionId": "2",
"action": "Create"
}, {
"permissionId": "3",
"action": "Read"
}]
}];
var newArray = arr.map(function(obj){
var rObj = {};
rObj[obj.name] = obj.permissions.map(function(childObj){
return childObj.action;
});
return rObj;
});
console.log(newArray);
var json = [{
"roleId": "1",
"name": "Superadmin",
"permissions": [{
"permissionId": "1",
"action": "Remove"
}]
}, {
"roleId": "2",
"name": "Administrator",
"permissions": [{
"permissionId": "1",
"action": "Remove"
}, {
"permissionId": "2",
"action": "Create"
}, {
"permissionId": "3",
"action": "Read"
}]
}];
var roles = {};
json.forEach(function(obj) {
var actions = [];
obj.permissions.forEach(function(permission) {
actions.push(permission.action);
});
roles[obj.name] = actions;
});
console.log(roles);
這正是您想要的。 只需遍歷 JSON 對象並獲取將它們存儲在另一個對象(角色)中所需的屬性。
輸出:
{
Superadmin: ['Remove'],
Administrator: ['Remove', 'Create', 'Read']
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.