3

このツリーを歩き回り、すべての「要素」オブジェクトを印刷しようとしていますが、うまくいきません

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": {}
            }
        }
    }
}

}

しかし、2つのオブジェクトを複数回印刷するだけ
です ここに私のコードがあります

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

ここにjsfiddleのコードがあります

4

1 に答える 1

3

したがって、jsfiddle ページで JSLint を実行するだけで、いくつかのことがわかりました。

  1. オブジェクトには多数のキーと値がありますが、キーが同じ場合、異なる値をどのように区別しますか? つまり、同じ名前のキーを複数持つことはできないため、複数の「要素」キーを持つネストされたオブジェクトは無効になります。
  2. for ループ内で要素を宣言できないと思います。事前に宣言してみてください。

    var 要素; for (configs の要素) {

  3. このコードがこの jsfiddle で何かを行うことを実際に期待している場合は、それを onLoad 関数に入れる必要があります。jsfiddle を使用してコードを表示している場合は、使用している場所で実際に呼び出していることを願っています。

私はあなたのキーに番号を付け、#2 をここで修正しました。または、以下を参照してください。

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);​

複数の「要素」キーを持つ別の方法は、要素のリストを含む「要素」配列を持つことです。

于 2012-11-06T08:12:43.610 に答える