Javascript 如何在java包等键的基础上将数组转换为JSON,以提供树状视图的外观
我的问题是如何在包等键的基础上将数组转换为JSON 我把这个数组作为初始值Javascript 如何在java包等键的基础上将数组转换为JSON,以提供树状视图的外观,javascript,arrays,angularjs,json,Javascript,Arrays,Angularjs,Json,我的问题是如何在包等键的基础上将数组转换为JSON 我把这个数组作为初始值 $scope.myValues = [ { title:"Transportation", id:"1", moduleId:"transportation" }, { title:"Bus", id:"1.1", moduleId:"transportation.bus" }, { title:"Tata Motors", id:"1.1.1",
$scope.myValues = [
{
title:"Transportation",
id:"1",
moduleId:"transportation"
},
{
title:"Bus",
id:"1.1",
moduleId:"transportation.bus"
},
{
title:"Tata Motors",
id:"1.1.1",
moduleId:"transportation.bus.tata.motors"
},
{
title:"Ashok Leyland",
id:"1.1.2",
moduleId:"transportation.bus.ashok.leyland"
},
{
title:"Eicher Motors",
id:"1.1.3",
moduleId:"transportation.bus.eicher.motors"
},
{
title:"Train",
id:"1.2",
moduleId:"transportation.train"
},
{
title:"The Himalayan Queen",
id:"1.2.1",
moduleId:"transportation.train.himQueen"
},
{
title:"Maharaja Deccan Odyssey",
id:"1.2.2",
moduleId:"transportation.train.maharaja.deccan"
},
{
title:"Darjeeling Himalayan Railway",
id:"1.2.3",
moduleId:"transportation.train.darjeeling.himalayan"
}
];
我希望我的最终数组根据键排序,就像java中的包键一样
$scope.myValues = [{
title:"Transportation",
moduleId:"transportation",
category:[{
title:"Bus",
moduleId:"transportation.bus",
category:[{
title:"Tata Motors",
moduleId:"transportation.bus.tataMotors",
},{
title:"Ashok Leyland",
moduleId:"transportation.bus.ashokLeyland",
},{
title:"Eicher Motors",
moduleId:"transportation.bus.eicherMotors",
}
]
},{
title:"Train",
moduleId:"transportation.train",
category:[{
title:"The Himalayan Queen",
moduleId:"transportation.train.himQueen",
},{
title:"Maharaja Deccan Odyssey",
moduleId:"transportation.train.maharajaDeccan",
},{
title:"Darjeeling Himalayan Railway",
moduleId:"transportation.train.darjeelingHimalayan",
}
]
}];
我有索引键。
我的目标是创建一个json格式的对象,具有基于索引的层次结构。
任何关于如何将此数组转换为类似于JSON格式的数组的建议。您可以通过在数据上循环一次来创建此树
- 从新格式的空数组开始
- 查看第一项
- 按
拆分其id,并将路径元素强制转换为索引 - 将数值路径拆分为最后一个索引,以及指向该索引的路径
- 按
- 创建一个新项目,暂时不使用
属性类别
- 使用数字路径浏览新格式,在需要时沿途创建
数组category
- 到达最深/最后一层后,使用最后一个索引添加到数组中
const data=[{title:“Transportation”,id:“1”,moduleId:“Transportation”},{title:“Bus”,id:“1.1”,id:“1.1”,moduleId:“Transportation.Bus.Tata.Motors”},{title:“Ashok-Leyland”,id:“1.1.2”,moduleId:“Transportation.Bus.Ashok.Leyland”},{title:“Eicher Motors”,id:“1.1.3”,moduleId:“运输.公共汽车.爱琴.汽车”},{title:“火车”,id:“1.2”,moduleId:“运输.火车”},{title:“喜马拉雅女王”,id:“1.2.1”,moduleId:“运输.火车.希姆奎因”},{title:“马哈拉贾.德干之旅”,id:“1.2.2”,moduleId:“运输.火车.马哈拉贾.德干”},{title:“大吉岭-喜马拉雅铁路”,id:“1.2.3”,moduleId:“交通。火车。大吉岭。喜马拉雅山“}”;
const addModule=(arr,{title,moduleId,id})=>{
常量项={title,moduleId};
constpath=id.split(“.”).map(Number.map)(n=>n-1);
const targetIndex=path[path.length-1];
常量索引=path.slice(0,-1);
const loc=index.reduce(
(arr,i)=>{
const next=arr[i];
如果(!next.category)next.category=[];
返回next.category;
},
啊
);
loc[targetIndex]=入口;
返回arr;
}
console.log(
data.reduce(addModule,[]))
)
首先将源数组转换为所显示的格式和顺序,然后在数组上使用JSON.stringify()
将其转换为JSON。