2016-08-19 18 views
0

Webサービスコールから大きな配列を取得しています。これを介してドロップダウンに移入する必要があります。ナビゲーションを高速化する最善の方法で階層リストをソートする

[{"Level1":"A1","Level2":"A11","Level3:"A111"}, 
{"Level1":"A1","Level2":"A12","Level3:""}, 
{"Level1":"A2","Level2":"A21","Level3:"A212"}, 
{"Level1":"A2","Level2":"A22","Level3:""}, 
{"Level1":"A3","Level2":"","Level3:""}, 
{"Level1":"A4","Level2":"A41","Level3:"A412","Level4:"A4123"}] 

配列はこの形式です。 リストを作成する必要があります。 また、レベル数は動的なので、レベル5,6,7 ...も持つことができます。

リストのオプションは、ユーザーがA2をクリックすると、表示されるオプションは

A21、A22

をBE-すべき

A1、A2、A3、A4

をBE-必要があります

ユーザーがA21をクリックすると、次のように表示されます:

A212

が、彼らは、それはそれ以上の価値を持っていないA22としてその値を選択してくださいA22

をクリックした場合。 また、ユーザーがオプションA212を選択した場合は、A21A22と表示されます。

何千もの要素が得られるので、この配列で再生して高速な結果を得るための最良の方法は何でしょうか。

+0

Webサービスが無効なJSONを返しています。 –

+0

希望の結果を追加してください - おそらくデータ構造。 –

答えて

0

Trieのデータ構造を見てください。 JavaScriptで

あなたはこのようにそれを整理することができます。

var root = { "A1": { "A11": .., "A12": .. }, "A2": { "A21": .., "A22": .. }, .. }; 

だから、rootオブジェクトからキーを取得し、それらを表示。ユーザーがA1をクリックすると、値root["A1"]が取得されます。簡単な挿入方法を使用し、それを構築するには

(私は右のそれを得る願って、確認してください):

function insert(node, elem, level) { 
    var key = "Level" + level; 
    var value = elem[key]; 
    if (!value) { 
     return; 
    } 
    var childNode = node[value]; 
    if (!childNode) { 
    childNode = {}; 
    node[value] = childNode; 
    } 
    insert(childNode, elem, level + 1); 
} 

スタートelemはあなたの配列の要素であるroot = {}insert(root, elem, 1)を宣言することもできます。

関連する問題