我一直堅持我認爲是JS中的一個簡單問題。我想要做的是我有一個未知的深度JSON,如下所示:在JavaScript中遞歸地解析JSON樹
"A": {
"B": {
"e": "",
"f": {
"g": "",
"h": ""
},
"C": {
"i": "",
"j": "",
"k": "",
"l": ""
},
"D": {
"m": "",
"n": "",
"o": "",
"p": ""
}...
json可以是任何深度的級別。我正在努力實現的是創建列祖列宗+本身各部分,使得爲「P」這將是["A", "B", "D", "p"]
我試着用遞歸像這樣:
build(json, '', []);
function build(json, path, assets){
for (var elem in json) {
if(json.hasOwnProperty(elem)){
if(json[elem] == 0){
assets.push(elem);
//do stuff with the array
assets.pop();
} else {
var parent = path + '/' + elem;
assets.push(parent);
build(json[elem], parent, assets);
return;
}
}
}
}
這是一個簡化版本的功能,部分不能正常工作。我背後的想法是通過每個元素,如果它沒有孩子,我追加當前元素並使用它(我不需要保留數組,只是爲了這個用途),如果它有孩子,我追加當前元素並遞歸調用當前元素的方法。
解決方案的工作,直到達到第二個層次,所以「E」,「F」,「C」,「d」,它產生正確的,但在此之前將自己的孩子停止。
我錯過了什麼?
嘗試刪除從代碼中返回的另一種方式,你可以做到這一點。 – Etherealm