cop007 发表于 2021-11-18 16:43

js数据格式转换求助

大佬们 请问一下怎么将如下数组格式

[
'com.yt.iot.store2.k1.IotStoreK1',
'com.yt.util.HttpUtil',
'com.yt.iot.store2.k1.task.RealTimeRedisStatTask'
]

转换为如下格式

[
{
    name: 'com',
    children: [
      {
      name: 'yt',
      children: [
          {
            name: 'iot',
            children: [
            {
                name: 'store2',
                children: [
                  {
                  name: 'k1',
                  children: [
                      { name: 'IotStoreK1' },
                      {
                        name: 'task',
                        children: [{ name: 'RealTimeRedisStatTask' }]
                      }
                  ]
                  }
                ]
            }
            ]
          },
          {
            name: 'util',
            children: [{ name: 'HttpUtil' }]
          }
      ]
      }
    ]
}
]

或者如下格式

[
{ id: 'com', name: 'com' },
{ id: 'yt', name: 'yt', pid: 'com' },
{ id: 'iot', name: 'iot', pid: 'yt' },
{ id: 'util', name: 'util', pid: 'yt' },
{ id: 'HttpUtil', name: 'HttpUtil', pid: 'util' },
{ id: 'store2', name: 'store2', pid: 'iot' },
{ id: 'k1', name: 'k1', pid: 'store2' },
{ id: 'IotStoreK1', name: 'IotStoreK1', pid: 'k1' },
{ id: 'task', name: 'task', pid: 'k1' },
{ id: 'RealTimeRedisStatTask', name: 'RealTimeRedisStatTask', pid: 'task' }
]

谢谢大佬们~


howyouxiu 发表于 2021-11-18 16:48

遍历,然后split分割就可以简单实现了

爱吃鹅肉饭 发表于 2021-11-18 17:23

好兄弟你正好可以练习一哈遍历以及数组的一些基本用法

zhou773 发表于 2021-11-18 17:26

开个悬赏吧

cop007 发表于 2021-11-18 18:13

howyouxiu 发表于 2021-11-18 16:48
遍历,然后split分割就可以简单实现了

谢谢大佬建议 用的遍历加数组去重实现的第二种数据格式

cop007 发表于 2021-11-18 18:14

爱吃鹅肉饭 发表于 2021-11-18 17:23
好兄弟你正好可以练习一哈遍历以及数组的一些基本用法

谢谢大佬建议 用的遍历加数组去重实现的第二种数据格式

cop007 发表于 2021-11-18 18:16

zhou773 发表于 2021-11-18 17:26
开个悬赏吧

谢谢大佬 用了个笨办法实现了[/捂脸]

WA0fifteen 发表于 2021-11-18 19:20

先分割数据,重组成你想要的格式,再用fastJSON转换一下

bly27984 发表于 2021-11-18 23:02

1.
let a=[
'com.yt.iot.store2.k1.IotStoreK1',
'com.yt.util.HttpUtil',
'com.yt.iot.store2.k1.task.RealTimeRedisStatTask'
];
let b=[];
let log=console.log;
a.forEach(i=>{
    let e=i.split('.');
    let l=e.reduce((m,n)=>{
      
      let k={name:n,children:[]}
      
      let j=m.find(u=>{
            return u.name==n;
      });
      if(j!=undefined)
            return j.children;
      m.push(k);
      return k.children;
    },b);
});
log(b);
2.
let a=[
'com.yt.iot.store2.k1.IotStoreK1',
'com.yt.util.HttpUtil',
'com.yt.iot.store2.k1.task.RealTimeRedisStatTask'
];
let b=[];
let log=console.log;
a.forEach(i=>{
    let e=i.split('.');
    let l=e.reduce((m,n)=>{
      
      let k={id:n,name:n,pid:m};
      if(b.find(x=>x.id==n)==undefined)
                        b.push(k);
      return n;
    },'');
});
log(b);
页: [1]
查看完整版本: js数据格式转换求助