2012-05-10 13 views
0

Iは、次の形式の配列を有する比較:JavaScriptは配列

var markers = [ 
    ['Title', 15.102253, 38.0505243, 'Description', 1], 
    ['Another Title', 15.102253, 38.0505243, 'Another Description', 2], 
    ['Title 3', 15.102253, 38.0505243, 'Description 3', 3], 
]; 

Iは、次にコンマ分離されているページ(M = 1,2)に渡されるクエリ文字列は、後に分割されているが次のような配列を作成します。

['1', '2'] 

私が行うために必要なものは、IDが(マーカー[I] [4])、クエリ文字列から来ているすべての「マーカー」を見つけることです。

これを達成するにはどうすればよいでしょうか?理想的には、「マーカー」と同じフォーマットで3番目の配列を作成したいが、クエリ文字列の結果のみを表示したい。

ご協力いただければ幸いです。

おかげ

答えて

2

1つのオプションは、ネストされたループを使用することです:

var markers = [ 
    ['Title', 15.102253, 38.0505243, 'Description', 1], 
    ['Another Title', 15.102253, 38.0505243, 'Another Description', 2], 
    ['Title 3', 15.102253, 38.0505243, 'Description 3', 3], 
]; 
var search = ['1', '2']; 
var result = []; 

for (var i = 0; i < search.length; i++) 
    for (var j = 0; j < markers.length; j++) 
     if (search[i] == markers[j][4]) { 
      result.push(markers[j]); 
      break; 
     } 

console.log(result); 

DEMO:http://jsfiddle.net/3TErD/

+0

スナップ! +1もセットアップ手順を説明するために! – dougajmcdonald

+0

素晴らしいです - これをありがとう。非常に多くのバリエーションが、この1つは私の選択を取る。デモリンクありがとう: – digitalclubb

+0

あなたは歓迎です;) – VisioN

2

はあなたがちょうどここに、ネストされたループを使用することができませんでしたか?

var filteredMarkers = []; 

for(var i = 0; i < markers.length; i++) { 

    for(var j = 0; j < queryStringArray.length; j++) { 

     // this might need to be changed as your markers has index 4 as a number whereas the queryString array appears to be strings. 
     if(markers[i][4] === queryStringArray[j]) { 

      filteredMarkers.push(markers[i]); 
      break; 

     } 

    } 

} 
+0

'Number(queryStringArray [j])'を追加してください –

+0

そうした潜在的な問題を解決する方法はたくさんあります。問題は2つの配列間の値のマッチングのロジックですしかし、その解決策として、それは私が推測してもOKです! – dougajmcdonald

+0

著者の配列については、バリアントは私のものよりも1サイクル多くなるでしょう;) – VisioN