Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在java包等键的基础上将数组转换为JSON,以提供树状视图的外观_Javascript_Arrays_Angularjs_Json - Fatal编程技术网

Javascript 如何在java包等键的基础上将数组转换为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",

我的问题是如何在包等键的基础上将数组转换为JSON

我把这个数组作为初始值

$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。