Javascript 点符号对象到多维对象
使用以下数据格式:Javascript 点符号对象到多维对象,javascript,Javascript,使用以下数据格式: const flat = { '100': 'L1', '100.200': 'L1, J2', '100.200.300': 'L1, J2, A3', '100.200.400': 'L1, J2, A4', '100.300': 'L1, J3', '100.400.500': 'L1, J4, A5' }; 我想把它改成这样: { "100":{ "name&quo
const flat = {
'100': 'L1',
'100.200': 'L1, J2',
'100.200.300': 'L1, J2, A3',
'100.200.400': 'L1, J2, A4',
'100.300': 'L1, J3',
'100.400.500': 'L1, J4, A5'
};
我想把它改成这样:
{
"100":{
"name":"L1",
"children":{
"200":{
"name":"L1, J2",
"children":{
"300":{
"name":"L1, J2, A3"
},
"400":{
"name":"L1, J2, A4"
}
}
},
"300":{
"name":"L1, J3"
},
"400":{
"name":null,
"children":{
"500":{
"name":"L1, J4, A5"
}
}
}
}
}
}
任何帮助都将不胜感激。我一直在尝试从中实现一些东西,尽管它们只涉及我的许多用例,很难理解。下面是一个使用对所提供对象的调用的示例
功能扩展(obj){
返回对象
.条目(obj)
.reduce((a[propString,name])=>{
常数
propArr=propString.split('.'),
innerProp=propArr.pop(),
innerObj=propArr.reduce((_a,prop)=>(
_a[prop]??={},_a[prop]),a);
innerObj[innerProp]={name};
返回a;
}, {})
}
常量平面={'100':'L1','100.200':'L1,J2','100.200.300':'L1,J2,A3','100.200.400':'L1,J2,A4','100.300':'L1,J3','100.400.500':'L1,J4,A5';
console.log(展开(展开(展开))代码>
.as-console-wrapper{max-height:100%!important;top:0;}
Object.keys
从平面对象获取所有键,Array.map
使用String.split
获取部分对象键和数组。reduce
返回您想要的对象“我一直在尝试实现一些事情”-请将您的问题包括在这些尝试中,否则我们无法告诉您出了什么问题,只能向您指出有关该主题的现有问题。谢谢!这完全有道理。当我放入一个超大数据集时,扩展函数失败了,但第二个数据集工作得很好。