0

配列内のすべての要素を一覧表示しようとしています。ご覧のとおり、 Company には 3 つのレベルがありますが、出力を出力するスクリプトは 2 つのレベルまでしか記述していません。3 番目のレベルにアクセスするにはどうすればよいですか? 3番目の内部で使用する必要がある配列は何for loopですか?

4

2 に答える 2

2

あなたが探しているのは再帰です。

ここにあなたのフィドルの修正版があります:http://jsfiddle.net/jEmf9/

function generateEntity(obj) {
    var html = [];

    var name = obj.entity;
    html.push('<li>');
    html.push(name);
    html.push('</li>');
    var arrayName = name.replace(/\s/gi, '_');
    if (obj[arrayName] == undefined) {
        return html.join('');
    }

    var entity = obj[arrayName];
    for (var i = 0; i < entity.length; i++) {
        html.push('<ul>');
        html.push(generateEntity(entity[i]));
        html.push('</ul>');
    }
    return html.join('');
}
于 2012-07-13T05:17:36.527 に答える
0

あなたの場合、第 3 レベルにアクセスするための特別なテクニックは必要ありません。任意の深さのツリーをレンダリングできるように、再帰的なツリー ウォーキング関数を記述する必要があります。

ここでコードの簡単なパッチを作成しました:http://jsfiddle.net/rtoal/xcEa9/6/

思い通りに動作するようになったら、html の作成に取り掛かることができます。を使用した文字列連結の繰り返し+=は非常に非効率的であることが知られていますが、それはこの質問の範囲外です。:)

于 2012-07-13T05:17:28.350 に答える