我建议您创建一棵树并将其
id === pid作为树的根,这适用于未排序的数据。
这个怎么运作:
基本上,对于数组中的每个对象,都需要像
id构建新对象一样使用来构建parentid新对象。例如:
{ "id": 6, "pid": 4 }它首先使用
id以下命令生成此属性:"6": { "id": 6, "pid": 4}然后用
pid:"4": { "children": [ { "id": 6, "pid": 4 } ]},在对所有对象进行类似处理的同时,我们最终得到了一棵树。
如果为
id === pid,则找到根节点。这是以后返回的对象。
var data = [ { "id": "f", "pid": "b", "name": "F" }, { "id": "e", "pid": "c", "name": "E" }, { "id": "d", "pid": "c", "name": "D" }, { "id": "c", "pid": "b", "name": "C" }, { "id": "a", "pid": "a", "name": "A" }, { "id": "b", "pid": "a", "name": "B" } ], tree = function (data) { var r, o = Object.create(null); data.forEach(function (a) { a.children = o[a.id] && o[a.id].children; o[a.id] = a; if (a.id === a.pid) { r = a; } else { o[a.pid] = o[a.pid] || {}; o[a.pid].children = o[a.pid].children || []; o[a.pid].children.push(a); } }); return r; }(data);console.log(tree);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)