如何解决对于这些对象的有效排序/嵌套算法有什么想法?
我想找到一种有效且合乎逻辑的方法来快速对大型对象列表进行排序: 输入是一大堆具有键值对的对象,每个对象都有一个“深度”键,分别是0、1、2或3。它描述了“深入嵌套”的意图。我要为这些对象的正确嵌套制作一个新列表,如下例所示:
输入:
[
{
"key": "valuea","depth": 0
},{
"key": "valueb","depth": 1
},{
"key": "valuec","depth": 2
},{
"key": "valued",{
"key": "valuee",{
"key": "valuef","depth": 1
}
]
这是所需的输出
[
{
"key": "valuea","depth": 0,"tasks": [
{
"key": "valueb","depth": 1,"tasks": [
{
"key": "valuec","depth": 2
}
]
}
]
},"tasks": [
{
"key": "valuee","depth": 1
},{
"key": "valuef","depth": 1
}
]
}
]
本来我原本是想遍历每个值并将它们与之前的值进行比较,但是当我考虑到您连续遇到两个深度相同的情况(例如“ 0,1”)时,我陷入了困境,1.”这里值得一提的是顺序,因为深度嵌套在具有较低深度的先前对象中。
解决方法
function nestByDepth(milestones) {
let result = [];
let depths = [result];
for (let task of milestones) {
depths[task.depth].push(task);
depths.splice(task.depth + 1); //should remove all elements at indices greater than task.depth
task["tasks"] = [];
depths.push(task.tasks);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。