87,992
社区成员
发帖
与我相关
我的任务
分享
[{"key1":"a", "key2":"b", "key3":"c"},
{"key1":"a", "key2":"b", "key3":"d", "key4":"e"},
{"key1":"a", "key2":"b", "key3":"f"}]
{
key1: "a",
children:
[
{key2: "b",
children:
[
{key3 : "c"},
{
key3 : "d",
children:
[
{key4:"e"}
]
},
{key3: "f"}
]}
]
}
var nest = d3.nest()
.key(function(d) { return d.key1; })
.key(function(d) { return d.key2; })
...
.entries(function(d) { return d.keyn; });
function toTree(data,level,key) {
var tree = [];
if(!level) level = 1;
for(var i=0;i<data.length;i++) {
var name = 'key'+level,mask = false;
if(data[i][name]===undefined || data[i][name]===null) continue;
if(data[i]['key'+(level-1)] && data[i]['key'+(level-1)]!==key) continue;
for(var j=0;j<tree.length;j++) {
if(data[i][name]==tree[j][name]) {
mask = true;
break;
}
}
if(!mask) {
var obj = {};
obj[name] = data[i][name];
obj.children = toTree(data,level+1,data[i][name]);
if(obj.children.length<=0) delete obj.children;
tree.push(obj);
}
}
return tree;
}
var data=[{"key1":"a", "key2":"b", "key3":"c"},
{"key1":"a", "key2":"b", "key3":"d", "key4":"e"},
{"key1":"a", "key2":"b", "key3":"f"}];
var tree=toTree(data);
function toTree(data,level) {
var tree = [];
if(!level) level = 1;
for(var i=0;i<data.length;i++) {
var name = 'key'+level,mask = false;
if(data[i][name]===undefined || data[i][name]===null) continue;
for(var j=0;j<tree.length;j++) {
if(data[i][name]==tree[j][name]) {
mask = true;
break;
}
}
if(!mask) {
var obj = {};
obj[name] = data[i][name];
obj.children = toTree(data,level+1);
if(obj.children.length<=0) delete obj.children;
tree.push(obj);
}
}
return tree;
}
var data=[{"key1":"a", "key2":"b", "key3":"c"},
{"key1":"a", "key2":"b", "key3":"d", "key4":"e"},
{"key1":"a", "key2":"b", "key3":"f"}];
var tree=toTree(data);//返回的tree为数组,tree[0]即为楼主所示的答案
function NodeObject(key,value,parentValue){
this.key = key;
this.value = value;
this.parentValue = parentValue;//父节点唯一标识
}{}
先转化成这种格式的就可以很容易的写出工具类转化成树了