在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 一個(gè)數(shù)據(jù)轉(zhuǎn)換的問題

一個(gè)數(shù)據(jù)轉(zhuǎn)換的問題

最近遇到一個(gè)數(shù)據(jù)轉(zhuǎn)換的問題,如下:
比如元數(shù)據(jù)是這樣的:

[
  { "name": "a" },
  { "name": "a.b" },
  { "name": "a.b.c" },
  { "name": "a.b.d" },
  { "name": "f" },
  { "name": "f.g" },
  { "name": "f.g.h" },
  { "name": "f.g.i" }
]

其中 . 是層級(jí)關(guān)系,a的子元素是b,轉(zhuǎn)換后要是這種格式:

[{
  name: 'a',
  children: [{
    name: 'b',
    children: [{
      name: 'c'
    },{
      name: 'd',
    }]
  }]
}, {
  name: 'f',
  children: [{
    name: 'g',
    children: [{
      name: 'h'
    },{
      name: 'i',
    }]
  }]
}]

層級(jí)不定,知道用遞歸,但是要塞在一個(gè)對(duì)象里面,好繞,已經(jīng)想傻了,大家有什么思路嗎

回答
編輯回答
墨沫
var v = [
  { "name": "a" },
  { "name": "a.b" },
  { "name": "a.b.c" },
  { "name": "a.b.d" },
  { "name": "f" },
  { "name": "f.g" },
  { "name": "f.g.h" },
  { "name": "f.g.i" }
]; //v 好序,不好序先排序
m = {};
v.forEach(o=>{
    l = o["name"].split('.');
    t = m;
    l.forEach(obj=>{
        if(t[obj] === undefined)t[obj] = {};
        t = t[obj];
    });
})

//遞歸
function f(m){
    var res = [];
    var k = [];
    for(var key in m){
        k.push(key);
    }
    for(var i in k){
        var obj = {"name": k[i]};
        if(Object.keys(m[k[i]]).length !== 0)obj.children = f(m[k[i]]);
        res.push(obj);
    }
    return res;
}

r = f(m);
2018年6月18日 12:27