javascript - 该算法是否有将列表转换为树的名称?
问题描述
这是 Nina Scholz 发布的算法,它将具有level
属性的已排序元素数组转换为树状结构:
链接:https ://stackoverflow.com/a/44519904/8252267
let exampleList = [{
id: 1,
level: 1
}, {
id: 2,
level: 2
}, {
id: 3,
level: 2
}, {
id: 4,
level: 3
}, {
id: 5,
level: 3
}, {
id: 6,
level: 1
}]
function getTree(array) {
var levels = [{}];
array.forEach(function(a) {
levels.length = a.level;
levels[a.level - 1].nodes = levels[a.level - 1].nodes || [];
levels[a.level - 1].nodes.push(a);
levels[a.level] = a;
});
return levels[0].nodes;
}
/*
result:
[
{
"id": 1,
"level": 1,
"nodes": [
{
"id": 2,
"level": 2
},
{
"id": 3,
"level": 2,
"nodes": [
{
"id": 4,
"level": 3
},
{
"id": 5,
"level": 3
}
]
}
]
},
{
"id": 6,
"level": 1
}
]
*/
它是 Nina 的原创,还是用于(可能)非常常见的任务的众所周知的算法?我在这里找到了答案,其中算法(创建嵌套的 html 列表)似乎非常相似。
这个算法有名字吗?
解决方案
推荐阅读
- php - 如何使用 Bootstrap Switch 控件通过 AJAX 向 php 脚本发送值
- java - 如何在arraylist中罢工和取消罢工
- javascript - 可观察的
不调用订阅者 - c - 带有测试和设置的信号量(代码实现可能的错误)
- html - 如何自动嵌入最新的 youtube 视频?
- python-3.x - 如何在 matplotlib 中将图例分隔为不同的子图
- python - is_valid() 函数根据表单中的 IntergerField 的回溯返回 false
- ios - 将状态/绑定传递给 UIViewRepresentable
- python - 是否可以在不使用回测库的情况下回测交易算法?
- python - 熊猫按日期比较值