2012-04-03 8 views
1

私は2つの非常に大きなmultidimesional配列(4000 +)があります。私はサーバーからの応答として最初の配列を取得します。これらの配列要素のそれぞれに対してDOMノードを作成する必要があります。このプロセスが終了したら、別のリクエストを送信しなければなりません。最初のリストの一部を変更しなければならない2番目のリストに基づいて、最初のリストのサブセットになる別のリストを取得します。 DOMも同様です)。このプロセスには非常に長い時間がかかりますが、2つのループがなければこれを達成する方法はありますか?それとももっと速い比較ですか?大規模な配列とjavacriptの比較

シナリオ

特定の領域(ARR1)の人々 のグループを検討し、次のように現実の世界での例は次のようになり。 DOMでは CheckBox - Nameと表示されます 特定のワクチン(arr2)が投与されている人のグループを考えてみましょう。ここでarr2は チェックボックスをチェックする必要がある要素のリストを持っています。リスト全体(arr1のdom表現)はすべて コストで表示する必要があります。あなたは、次のようにオブジェクトとして受信データの第二のセットに送信する場合

配列は...タイプ

[ ["index", "name", "age"],............. ["4000-index", "4000-name", "4000-age"]] 

ここで擬似コードがあるの

//First request, get the response (resp) and Create DOM elements accordingly 
for(var i=0, iLen=resp.length; i<iLen; i++) 
{ 
    // Checkbox and <span id='entry-"+resp[i][0]+"'>resp[i][1]</span> 
} 
// At a later stage in the code... 
//Request server for the second list get the response (resp) 
arr2 = resp // Second Array 

// Walk through the dom, get the list of span elements and store their ids in an array arr1 
for(var i=0, iLen=arr1.length; i<iLen; i++) 
{ 
    for(var j=0, jLen= arr2.length; j<jLen; j++) 
    { 
    if(+arr2[j][0] === +arr1[i][0]) 
    { 
     //checkbox attr = 'checked' 
    } 
    } 
} 
+1

を持っているのですか?たぶん助けてくれるでしょう:-) – santa

+3

多分、あなたはサーバがクライアントに送るものを考え直すべきです。 2つのリストが関連しているので、2つのクエリはなぜですか? – mpm

+0

@camus&santa:理解を容易にするために質問を更新しました。これらのリストは異なるデータベースで管理されているため、2つの照会があります。したがって、 –

答えて

2

ですあなたが本当に良いパフォーマンスの向上を得ることができます。

var subset = { 
    anID:{ 
     bcg: true, 
     someOtherProp: false, 
     //and so on 
    } 
} 

は、その後、あなたのDOM要素変更する必要があるすべて - そしておそらく例のdataProvider - あなたは、いくつかのサンプルコードを

for (var id in subset){ 
    //do whatever needs to be done 
} 
関連する問題