从伪层次结构创建嵌套对象
Creating nested objects from a pseudo-hierarchy
我有这样的数据:
[{
level: 0,
data: 'A',
}, {
level: 1,
data: 'B',
}, {
level: 1,
data: 'C',
}, {
level: 2,
data: 'D',
}, {
level: 3,
data: 'E',
}, {
level: 1,
data: 'F',
}]
可以可视化为:
A
B
C
D
E
F
我想把它转换成:
{
data: 'A',
children: [{
data: 'B',
}, {
data: 'C',
children: [{
data: 'D',
children: [{
data: 'E',
}]
}]
}, {
level: 1,
data: 'F',
}]
}
通过它们的level
有效地将项目转化为树。只有一个顶层元素。
我真不知道该怎么做。我想我需要某种基于堆栈的解决方案,但是我还没有想出来。
嗯,这比预期的要容易:
var stack = [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
var toAdd = {
data: item.data,
children: []
};
stack[item.level] = toAdd;
if(item.level > 0)
stack[item.level - 1].children.push(toAdd);
}
var tree = stack[0];
console.log(tree);
相关文章:
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- 如何打印嵌套对象的所有值
- 设置嵌套对象属性的更好方法
- 嵌套对象结构
- 如何递归地获取嵌套对象中所有子对象的列表
- 更改嵌套对象的父子相关id
- 如何通过json对象数组为嵌套对象赋值
- Ember.js(2.5.0)如何设置嵌套对象值
- 嵌套对象文本访问父级
- 如何对两个嵌套对象进行排序
- 在javascript中使用方括号表示法的嵌套对象
- 具有嵌套对象数组的 Javascript 对象的递归搜索函数
- 更新嵌套对象的多个字段
- MongoDB嵌套对象数组后查询
- 在流星中插入嵌套对象
- 将嵌套对象数据添加到窗体中
- Chai深度包含了对嵌套对象的断言
- 使用Angular.js解析JSON中的嵌套对象数组
- 如何以编程方式添加到可变嵌套对象中
- Javascript嵌套对象访问根级别