树视图javascript的反向级别
Reverse level of treeview javascript
本文关键字:视图 javascript 更新时间:2023-09-26
请帮我用javascript数组创建树视图。场景是我想创建具有反向级别的树视图。例如:
我有一个以下格式的数组:
var arr = [
{'id':1 ,'parentid' : 0},
{'id':2 ,'parentid' : 1},
{'id':3 ,'parentid' : 1},
{'id':4 ,'parentid' : 2},
{'id':5 ,'parentid' : 0},
{'id':6 ,'parentid' : 0},
{'id':7 ,'parentid' : 4}
];
我正试图按照以下顺序创建树视图:预期输出:
[
{
"id": 1,
"parentid": 0,
level:4,
"children": [
{
"id": 2,
"parentid": 1,
level:3,
"children": [
{
"id": 4,
"parentid": 2,
level:2,
"children": [
{
"id": 7,
"parentid": 4,
level:1
}
]
}
]
},
{
"id": 3,
"parentid": 1,
level:3
}
]
},
{
"id": 5,
"parentid": 0
level:4
},
{
"id": 6,
"parentid": 0,
level:4
}
]
基本上任务通过三个步骤解决
- 生成树
- 获得最大级别
- 应用级别
var arr = [{ 'id': 1, 'parentid': 0 }, { 'id': 2, 'parentid': 1 }, { 'id': 3, 'parentid': 1 }, { 'id': 4, 'parentid': 2 }, { 'id': 5, 'parentid': 0 }, { 'id': 6, 'parentid': 0 }, { 'id': 7, 'parentid': 4 }],
tree = function (array) {
function iterGet(o) {
if (Array.isArray(o.children)) {
maxLevel++;
o.children.forEach(iterGet);
}
}
function iterSet(level) {
return function (o) {
o.level = level;
Array.isArray(o.children) && o.children.forEach(iterSet(level - 1));
}
}
var o = { id: 0 },
maxLevel = 1;
array.forEach(function (a) {
o[a.id] = o[a.id] || { id: a.id };
a.children = o[a.id].children;
o[a.parentid] = o[a.parentid] || { id: a.parentid };
o[a.parentid].children = o[a.parentid].children || [];
o[a.parentid].children.push(o[a.id]);
});
iterGet(o[0]);
iterSet(maxLevel)(o[0]);
return o[0].children;
}(arr);
document.write('<pre>' + JSON.stringify(tree, 0, 4) + '</pre>');
相关文章:
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何包含特定于每个视图angularjs的javascript文件
- 如何在Ionic Android中将Javascript注入到web视图中
- 如何在MVC5中ajax调用的部分视图中引用外部javascript
- 在CodeIgniter视图中将Javascript或jQuery代码作为PHP文件编写可以吗
- 我应该将MVC视图特定的javascript文件放在哪个文件夹中
- 树视图javascript的反向级别
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 将c#视图模型转换为javascript模型时转义HTML标记
- 如何访问Web2py'中python代码中的JavaScript变量;s视图
- Rails:将资产管道中的纯javascript限制为特定视图
- 使用javascript在MVC视图中解析.net JSON字符串
- Android网络视图:JavaScript在触摸时停止
- 如何在mvc3视图javascript中查找当前请求是否为ajax
- MVC视图Javascript变量
- MVC4 部分视图 JavaScript 捆绑问题
- IE9 兼容性视图 Javascript 问题
- playframework从视图javascript调用Model方法
- IOS:Web视图javascript禁用
- IE 11和Chrome中的网格视图Javascript错误