我正试图穿过这棵树并打印所有“元素”对象,但它不能与我合作
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
上的代码答案 0 :(得分:3)
因此,只需在jsfiddle页面中运行JSLint,我就找到了一些东西:
我认为你不能在for循环中声明元素,尝试提前声明:
var元素; for(configs中的元素){
如果您真的希望此代码在此jsfiddle中执行某些操作,则必须将其放入onLoad函数中。如果您只是使用jsfiddle向我们展示您的代码,那么我希望您在使用它的任何地方实际调用它。
我计算了你的密钥并修复了#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);
拥有多个“元素”键的另一种方法是使用包含元素列表的“elements”数组。