将 json 对象转换为数组
Converting json object to an array
如何使用 lodash
或 javascript 转换以下内容:
[
{
"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
and 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']
}
如何使用 lodash
或 javascript 转换以下内容:
[
{
"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
and 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']
}