【发布时间】:2013-01-07 22:44:00
【问题描述】:
我有 3 个不同的对象(obj1,2,3),如下所示,我正在尝试形成 finalObj,它是 3 个对象的联合(唯一树列表)..
我不确定实现这一目标的最佳方法是什么..
编辑:文本是这里的关键。如果已经存在具有相同文本的父节点,我们只需忽略并移动到其子节点并检查该子节点是否存在,否则将该子节点附加到现有父节点等等...
var obj1 = [{
text: "TreeRoot",
items: [
{ text: "Subgroup1"},
{ text: "Subgroup2"}
]
}]
var obj2 = [{
text: "TreeRoot",
items: [
{ text: "Subgroup3"}
]
}]
var obj3 = [{
text: "Subgroup3",
items: [{
text: "subgroup5",
items: [{
text: "subgroup6",
items: [{
text: "subgroup7",
items: [{
text: "subgroup8"
}]
}]
}]
}]
}]
var finalObj = [{
text: "TreeRoot",
items: [
{ text: "Subgroup1"},
{ text: "Subgroup2"},
{
text: "Subgroup3",
items: [{
text: "subgroup5",
items: [{
text: "subgroup6",
items: [{
text: "subgroup7",
items: [{
text: "subgroup8"
}]
}]
}]
}]
}
]
}]
【问题讨论】:
-
如何才能知道
obj3中的“Subgroup3”在TreeRoot之下?所有“根”项都必须进行完整遍历以查看名称是否与任何后代匹配,并且仅当它没有创建新的根条目时?请注意,在上述情况下,合并这些树的顺序会改变结果。 -
您需要为此进行自定义编码。除了 jQuery
merge()函数(这里几乎与您的需求完全无关)之外,您是否尝试过其他任何方法? -
[The][1] 此处列出的解决方案解决了我的问题... [1]:stackoverflow.com/questions/14222000/…
标签: javascript jquery object merge treeview