javascript - 如何在 Javascript 中形成嵌套对象

标签 javascript treeview

我正在尝试使用 JavaScript 动态形成如下所示的嵌套树对象,有人可以告诉我实现此目的的最佳方法吗?

 var contextpath= {
        text: "TreeRoot",
        items: [ {
            text: "subgroup1" ,
            items: [ {
                text: "subgroup2",
                items: [ {
                    text: "subgroup3",
                    items: [ {
                        text: "subgroup4",
                        items: [ {
                            text: "subgroup5"
                        }]
                    }]
                }]
            }]
        }]
    };

我尝试将分隔字符串转换为对象(可用作树组件的数据源)。

var path="TreeRoot|subgroup1|subgroup2";

尝试实现类似下面的东西,但使用较少数量的变量进行递归/循环。

    var contextpathText= {};
    contextpathText.text ="TreeRoot";

    var childObject={};
    var items=[];
    childObject.text ="subgroup1";
    items.push(childObject);
    contextpathText.items=(items);

最佳答案

您需要一个深度计数器来存储您正在使用的对象的当前级别。

var obj = {text:''}, parent, child, i = 0;
obj.text = 'TreeRoot';
parent = obj;
while (++i <= 5) {
    if (parent.items === undefined) parent.items = []; // because you don't have an items on the last subgroup you can't put it in the object literal
    child = {text: 'subgroup'+i};
    parent.items.push(child);
    parent = child;
}
parent = child = null; // cleanup
obj;

jsbeautified JSON.stringify(obj) 现在是

{
    "text": "TreeRoot",
    "items": [{
        "text": "subgroup1",
        "items": [{
            "text": "subgroup2",
            "items": [{
                "text": "subgroup3",
                "items": [{
                    "text": "subgroup4",
                    "items": [{
                        "text": "subgroup5"
                    }]
                }]
            }]
        }]
    }]
}

编辑分隔字符串

var path = 'TreeRoot|subgroup1|subgroup2';

var obj = {text:''}, parent, child, levelText = path.split('|').reverse();
obj.text = levelText.pop() || '';
parent = obj;
while (levelText.length > 0) {
    child = {text: levelText.pop()};
    if (!parent.items) parent.items = [];
    parent.items.push(child);
    parent = child;
}
obj;

关于javascript - 如何在 Javascript 中形成嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13829914/

相关文章:

php - 如何从 mysql/php 获取树形 View 中的记录

javascript - 是否有一个简单的库可以将 JSON 对象呈现为树?

python - 在继承的 TreeView 中创建和打开记录在 odoo 中不起作用

javascript - 防止 HTML 形式的三星预测文本

javascript - 如何在 Google Chrome 中使用 iframe 查看包含 JQuery 的网页

C# 系统.Windows.Forms.TreeView : Stop auto expand/collapse on double-click (and execute another handler)

C# 复杂的 TreeView 设计

javascript - 调整浏览器窗口大小时,缩放图像而不是在图像周围环绕文本

javascript - 将 js 文件加载到局部 View 中

javascript - 如何使用正则表达式选择字符串中每个单词的首字母