获取对象树中给定节点的子节点
Get children of a given node within an object tree
如何在深度 = 1 的对象树中返回给定节点(键名)的子节点(键名),表示仅表示第一个子节点。
具体问题:
所以这是一个示例数据对象...
{
"1753": {
"1755": {
"1758": {
"1762": "1753_1755_1758_1762",
"1760": "1753_1755_1758_1760",
"1764": "1753_1755_1758_1764",
"1761": "1753_1755_1758_1761"
},
"1759": {
"1762": "1753_1755_1759_1762",
"1760": "1753_1755_1759_1760",
"1764": "1753_1755_1759_1764",
"1761": "1753_1755_1759_1761"
}
},
"1756": {
"1758": {
"1762": "1753_1756_1758_1762",
"1760": "1753_1756_1758_1760",
"1764": "1753_1756_1758_1764",
"1761": "1753_1756_1758_1761"
},
"1759": {
"1762": "1753_1756_1759_1762",
"1760": "1753_1756_1759_1760",
"1764": "1753_1756_1759_1764",
"1761": "1753_1756_1759_1761"
}
},
"1757": {
"1758": {
"1762": "1753_1757_1758_1762",
"1760": "1753_1757_1758_1760",
"1764": "1753_1757_1758_1764",
"1761": "1753_1757_1758_1761"
},
"1759": {
"1762": "1753_1757_1759_1762",
"1760": "1753_1757_1759_1760",
"1764": "1753_1757_1759_1764",
"1761": "1753_1757_1759_1761"
}
}
},
"1754": {
"1755": {
"1758": {
"1763": "1754_1755_1758_1763"
}
},
"1756": {
"1758": {
"1763": "1754_1756_1758_1763"
}
},
"1757": {
"1758": {
"1763": "1754_1757_1758_1763"
}
}
}
};
对象的每个级别代表页面上的一个下拉菜单。
我需要做的是,当有人从其中一个下拉菜单中选择某些内容时,我需要返回所有剩余菜单的可能性。
例如,假设我从 dropdown-3 中选择值"1758"(因为它是对象的第三级),请执行以下操作:
I would need to return info stating that because I selected "1758" from dropwdown-3...
-dropdown-1 can be 1753, 1754.
-dropdown-2 can be 1755,1756,1757
-dropdown-3 can remain unchanged
-dropdown-4 can be 1762,1760,1764,1761,1763
到目前为止,我已经能够取得如此多的成就...当发生以下情况的某种组合时,问题就出现了:
I have selected option "1758" from dropdown-3, AND THEN SELECTED "1754" from dropdown-1...
-dropdown-1 has the most recent selected value, it can remain unchanged
-dropdown-2 can be 1755,1756,1757
-dropdown-3 is set, but can still have its possible values modified & checked for accuracy
-dropdown-3 can be only 1758
-dropdown-4 can be only 1753
这是一个示例对象,我的所有对象都有不同的深度和复杂性......我已经做了不少尝试,希望有人能向我展示光明:)
谢谢
想一想,你想根据选择(节点名称)它的子级,所以你不需要完整的对象树(尽管你可以使用它),您可以更轻松地将邻接列表用作查找表(哈希表):
adj["1753"] = ["1755"];
adj["1755"] = ["1758"]
adj["1758"] = ["1762", "1760", "1764", "1761"]
adj["1762"] = "1753_1755_1758_1762"
...
所以现在有人选择 "1753",你查找 adj["1753"] 并得到带有可能 chidlren 的数组,与其他数组相同。
但是如果你想使用你不知道的深度的当前数据结构,那么你应该使用 for(树中的 var 键)+ 递归来遍历树,但这几乎毫无意义,因为你需要一个给定的(父)节点名称遍历整个树以"知道"父节点的位置(假设唯一键!
因此,最好使用邻接列表。
相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 检测单击子节点并发送槽事件处理程序
- 从 d3.js 中的树中选择节点的子节点
- 访问所选剑道树视图节点的子节点
- 为什么正文标记后的脚本标记在子节点中计数
- 难以获取使用属性选择的节点的子节点
- 使用Javascript设置带有子节点的父节点的类's文本等于.
- 如何确定父节点是否有子节点
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- Javascript - 子节点计数
- 在子节点上重复
- 如何在D3.js基于力的标签布局图中获取公共子节点
- 如何访问React中的子节点
- js初学者-如何在比网页中的DOM节点低一个级别上立即解析所有子节点
- cloneNode并将所有节点(父节点+子节点)的值相加.Javascript