gpt4 book ai didi

javascript - 遍历 JavaScript 对象树

转载 作者:行者123 更新时间:2023-11-29 10:49:30 25 4
gpt4 key购买 nike

我试图遍历这棵树并打印所有“元素”对象,但它对我不起作用

var config = {
"tree": {
"element": {
"name": "pd",
"children": {
"element": {
"name": "pd2",
"children": {}
},
"element": {
"name": "pd3",
"children": {
"element": {
"name": "pd6",
"children": {}
},
"element": {
"name": "pd5",
"children": {
"element": {
"name": "pd7",
"children": {
"element": {
"name": "pd8",
"children": {}
}
}
}
}
}
}
},
"element": {
"name": "pd4",
"children": {}
}
}
}
}

但它只多次打印两个对象
这是我的代码

    function parseConfig(configs){
for(var element in configs){
if (typeof(configs[element])=="object") {
console.log(configs[element]);
parseConfig(configs[element]);
}
}
}

这是 jsfiddle 上的代码

最佳答案

因此,通过在您的 jsfiddle 页面中运行 JSLint,我发现了一些东西:

  1. 一个对象有许多键和值,但是如果它们具有相同的键,您将如何区分不同的值?换句话说,你不能有多个同名的键,所以你的嵌套对象有多个“元素”键是无效的。
  2. 我认为您不能在 for 循环内声明元素,请尝试提前声明它:

    变量元素;for(配置中的元素){

  3. 如果您确实希望此代码在此 jsfiddle 中执行某些操作,则必须将其放入 onLoad 函数中。如果您只是使用 jsfiddle 向我们展示您的代码,那么我希望您在使用它的任何地方都能真正调用它。

我计算了你的 key 并修复了#2 here .或者在下面查看:

var config = {
"tree": {
"element": {
"name": "pd",
"children": {
"element1": {
"name": "pd2",
"children": {}
},
"element2": {
"name": "pd3",
"children": {
"element1": {
"name": "pd6",
"children": {}
},
"element2": {
"name": "pd5",
"children": {
"element": {
"name": "pd7",
"children": {
"element": {
"name": "pd8",
"children": {}
}
}
}
}
}
}
},
"element3": {
"name": "pd4",
"children": {}
}
},
"element": {
"name": "pd4",
"children": {}
}
}
}
};

function parseConfig(configs) {
var element;
for (element in configs) {
if (typeof(configs[element]) == "object") {
console.log(configs[element]);
parseConfig(configs[element]);
}
}
}
parseConfig(config);​

拥有多个“元素”键的另一种方法是拥有一个包含元素列表的“元素”数组。

关于javascript - 遍历 JavaScript 对象树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13246780/

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