想要在nodejs(javascript)中创建数组的数组
我想使用给定的记录创建数组的数组想要在nodejs(javascript)中创建数组的数组,javascript,arrays,node.js,express,Javascript,Arrays,Node.js,Express,我想使用给定的记录创建数组的数组 user_permission = [ { _id: 1, description: 'chairman list', main_module: 'admin', sub_module: 'admin' }, { _id: 2, description: 'create chairman get method', main_module: 'admin', sub_module: 'admin' }, {
user_permission =
[ { _id: 1,
description: 'chairman list',
main_module: 'admin',
sub_module: 'admin' },
{ _id: 2,
description: 'create chairman get method',
main_module: 'admin',
sub_module: 'admin' },
{ _id: 3,
description: 'create chairman post method',
main_module: 'admin',
sub_module: 'admin' },
{ _id: 4,
description: 'chairman list post',
main_module: 'chairman',
sub_module: 'chairman' },
{ _id: 5,
description: 'vendor list',
main_module: 'vendor',
sub_module: 'vendor' },
{ _id: 6,
description: 'vendor list post',
main_module: 'vendor',
sub_module: 'vendor' } ]
使用这个数组,我想得到这个类型的数组,就像给定的例子一样
[
[ 'admin > admin': { '1': 'chairman list' },
{ '2': 'create chairman get method' },
{ '3': 'create chairman post method' }
],
[ 'chairman > chairman': { '4': 'chairman list post' }
],
[ 'vendor > vendor': { '5': 'vendor list' },
{ '6': 'vendor list post' }
]
]
使用foreach并获得结果,但我没有创建正确的数组
user_permission.forEach(function(data){
var mainmodule = [[data.main_module]+" > "+[data.sub_module]];
var key = data._id;
var val = data.description;
var elem = new Array();
elem[mainmodule] ={};
elem[mainmodule][key] = val;
user_prems.push(elem);
})
foreach的结果如下:-
[
[ 'admin > admin': { '1': 'chairman list' } ],
[ 'admin > admin': { '2': 'create chairman get method' } ],
[ 'admin > admin': { '3': 'create chairman post method' } ],
[ 'chairman > chairman': { '4': 'chairman list post' } ],
[ 'vendor > vendor': { '5': 'vendor list' } ],
[ 'vendor > vendor': { '6': 'vendor list post' } ]
]
您可以使用reduce转换数据:
让用户_权限=[
{{u id:1,description:'主席列表',主模块:'管理',子模块:'管理'},
{{u id:2,description:'create chairman get method',主模块:'admin',子模块:'admin'},
{u id:3,description:'创建主席职位方法',主模块:'管理',子模块:'管理',
{id:4,描述:'主席名单职位',主模块:'主席',子模块:'主席',
{{u id:5,description:'vendor list',主模块:'vendor',子模块:'vendor'},
{{u id:6,description:'vendor list post',主模块:'vendor',子模块:'vendor'}]
let result=user\u permission.reduceprev,current=>{
let key=`${current.main_module}>${current.sub_module}`;
让group=prev.findx=>x[key];
如果{
组={[key]:[]};
普什集团;
}
组[key]。推送{[current.\u id]:current.description};
返回上一个;
}, []
console.logresult 首先,您的预期输出是不正确的。你应该有一个对象而不是数组。他们使用reduce获得一个对象,该对象的键为admin>admin,。。。和值作为将包含对象的数组 const user_permission=[{{u id:1,description:'主席列表',main_模块:'管理',sub_模块:'管理'},{{u id:2,description:'创建主席获取方法',main_模块:'管理',sub_模块:'管理'},{u id:3,description:'创建主席发布方法',main_模块:'管理',{id:4,描述:'主席名单岗',主模块:'主席',子模块:'主席'},{id:5,描述:'供应商名单',主模块:'供应商',子模块:'供应商'},{id:6,描述:'供应商名单岗',主模块:'供应商',子模块:'供应商'}] const res=user\u permission.reduceac,a=>{ let key=`${a.main_module}>${a.sub_module}` 如果!ac[key]ac[key]=[]; ac[key].push{[a.\u id]:a.description} 返回ac; },{}
console.Logrest在javascript中没有这样的结构…您需要包含数组的对象对吗?['admin>admin':{'1':'chairman list'},您所需的输出无效。数组没有键值对。您需要这样的结构?{'admin':[{'1':'chairman list'}}很好,但如何创建此{'admin':[{'1':'chairman list'}].请给我举个例子