gpt4 book ai didi

javascript - 如何在遍历树时获取 JSON 树中节点的导航路径

转载 作者:搜寻专家 更新时间:2023-11-01 04:35:38 25 4
gpt4 key购买 nike

JSON 摘录:

{
"a": {
"b1" : {
"c1" : {
"d1" : "D1",
"d2" : "D2",
"d3" : "D3"
},
"c2" : {
"d4" : "D4",
"d5" : "D5"
}
},
"b2" : {
"c3" : {
"d6" : D6
}
}
}
}

我想遍历 JSON Tree 并获得一个 'd' 系列值的列表以及每个 'd' 节点的导航路径,例如

[{'name': 'd1', 'value': 'D1', 'path': ['a', 'b1', 'c1']},...]

这里,我写了一个函数如下:

        function GetParameters(obj) {
for (var sProp in obj) {
if(typeof(obj[sProp]) == "string") {
parameters.push({'name':sProp,'value':obj[sProp]})
} else {
GetParameters(obj[sProp]);
}
}
}

此函数仅生成每个“d”记录的“名称”和“值”部分,但如何在该函数中完成“路径”部分?

欢迎任何解决方法。谢谢!

最佳答案

您可以使用迭代和递归方法来提供下一个递归的实际路径。

如果找到结束节点,则将一个新对象推送到包含已访问节点的结果数组。

function getPath(object) {

function iter(o, path) {
Object.keys(o).forEach(function (k) {
if (typeof o[k] === 'object') {
return iter(o[k], path.concat(k));
}
result.push({ name: k, value: o[k], path: path });
});
}

var result = [];
iter(object, []);
return result;
}

var data = { "a": { "b1": { "c1": { "d1": "D1", "d2": "D2", "d3": "D3" }, "c2": { "d4": "D4", "d5": "D5" } }, "b2": { "c3": { "d6": "D6" } } } };

console.log(getPath(data));

关于javascript - 如何在遍历树时获取 JSON 树中节点的导航路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37938039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com