У меня есть этот объект:
const sampleObj = {
home: true,
products_edit: true,
products_create: true,
orders_delete: true,
pages_category_create: true
}
Я хочу преобразовать вышеуказанный объект в:
const result = {
home: {
status: 'full'
},
products: {
status: 'limited',
subOptions: {
edit: true,
create: true
}
},
orders: {
status: 'limited',
subOptions: {
delete: true,
}
},
pages: {
status: 'limited',
subOptions: {
category: {
status: 'limited',
subOptions: {
create: true,
}
},
}
}
}
Итак, я хочу преобразовать ключи объекта во вложенные объекты на основе символа _
, а число _
может быть больше 3.
Если ключ состоит из одной части, такой как «Домой», статус должен быть «полный», в противном случае он должен быть «ограниченным».
Это мой текущий код:
function rolesFlattener(obj) {
let final = {};
Object.keys(obj).forEach((item, index) => {
const path = item.split('_');
if(path.length > 1) {
path.reduce((prev, current, i, array) => {
if(!final[prev]) {
final[prev] = {
status: 'limited',
subOptions: {}
}
}
final[prev].subOptions[current] = true;
return current;
});
}
else {
final[path[0]] = {
status: 'full'
}
}
})
console.log(final)
}
// userRole: {
// home: {
// status: 'full'
// },
// products: {
// status: 'limited',
// subOptions: {
// edit: true,
// create: true
// }
// },
// orders: {
// status: 'limited',
// subOptions: {
// delete: true,
// }
// },
// pages: {
// status: 'limited',
// subOptions: {
// category: {
// status: 'limited',
// subOptions: {
// create: true,
// }
// },
// }
// }
// }
let sampleObj = {
home: true,
products_edit: true,
products_create: true,
orders_delete: true,
pages_category_create: true
}
rolesFlattener(sampleObj)