2012-05-10 5 views
0

j'ai un tableau dans le format suivant:JavaScript comparer les tableaux

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], 
]; 

Je puis une chaîne d'interrogation étant transmis à la page (m = 1,2), qui est séparé par une virgule, est ensuite séparé de créer un tableau comme le suivant:

['1', '2'] 

Ce que je dois faire est de trouver tous les « marqueurs » où l'identification (marqueurs [i] [4]) provient de la chaîne de requête.

Quel serait le meilleur moyen d'y parvenir? Idéalement, je veux créer un troisième tableau dans le même format que 'marqueurs' mais en ne montrant que les résultats de la chaîne de requête.

Toute aide serait grandement appréciée.

Merci

Répondre

2

Une option consiste à utiliser des boucles imbriquées:

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

Snap! +1 pour décrire les étapes de configuration aussi! – dougajmcdonald

+0

Génial - merci pour cela. Tellement de variations mais celle-ci prend mon choix. Merci pour le lien de démonstration aussi :) – digitalclubb

+0

Vous êtes les bienvenus;) – VisioN

2

Ne pourriez-vous simplement utiliser ici une boucle imbriquée?

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

Il suffit d'ajouter 'Number (queryStringArray [j])' –

+0

Oui, il existe plusieurs façons de résoudre ce problème potentiel, la question est autour de la logique des valeurs de correspondance entre deux tableaux Cependant, comme une solution pour ça c'est ok je suppose! – dougajmcdonald

+0

Pour les tableaux d'auteur, votre variante ira un cycle de plus que le mien;) – VisioN