[英]Converting json object to an array
How can I convert the below using lodash
or javascript :如何使用
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"
}
]
]
To this:对此:
{
Superadmin: ['Remove'],
Administrator: ['Remove', 'Create', 'Read']
}
A proposal with Array#forEach
and Array#map
.带有
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>');
You can use reduce
& map
您可以使用
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;
},{});
seeing the formatted and valid json from comments, here is something which you can use.从评论中看到格式化和有效的 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);
https://jsfiddle.net/daze5a4c/1/ https://jsfiddle.net/daze5a4c/1/
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);
This is exactly how you want it.这正是您想要的。 Just loop through the JSON-objects and get the properties you need to store them in another object (roles).
只需遍历 JSON 对象并获取将它们存储在另一个对象(角色)中所需的属性。
Output:输出:
{
Superadmin: ['Remove'],
Administrator: ['Remove', 'Create', 'Read']
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.