2010-10-24 4 views
1

J'ai une chaîne comme celle-ci étant retourné de mon back-end:Explose une chaîne dans un hashmap pour la recherche?

"1,2,3,4,5,6" 

Je place un grand choix et que vous souhaitez afficher uniquement les éléments ne sont pas dans cette liste, donc je pensais à exploser cette chaîne dans un tableau mais comment puis-je effectuer une recherche efficace? Pour autant que je sache, il n'y a pas de hashmaps dans JS alors comment fait-on cela? Je dois juste vérifier l'existence de la clé.

+0

Vous Voulez-vous afficher les éléments de la liste nouvellement retournée qui ne sont pas dans le tableau local, ou vice versa? La liste du backend sera-t-elle toujours petite? – SimonJ

+0

@SimonJ: Oui c'est correct. La liste démarre initialement petit mais pourrait grossir mais ne dépassera pas la taille du grand tableau local. – Legend

Répondre

2

Tous les objets Javascript sont aussi des tables de hachage qui peuvent stocker des clés numériques ou des chaînes:

var x = {}; 
x["foo"] = 1; 
if("foo" in x) { alert("hello!"); } 
if("bar" in x) { alert("should never see this"); } 
+0

vrai, mais ne répond pas à la vraie question (vérifier une existence de nombre dans la chaîne donnée) –

+0

Merci. Je vais adapter cela à mon besoin. – Legend

2
"1,2,3,4,5,6".split(",").some(function(letter) { 
    return letter === '2' 
}); 

Attention: ne fonctionne pas dans IE (ou un autre navigateur merdique)

Version Cross du navigateur (qui repose sur le code natif pour la performance):

var arr = "1,2,3,4,5,6".split(","); 
if(arr.some) 
{ 
    arr.some(function(letter) { 
    return letter === '2' 
    }); 
} 
else 
{ 
    for(var i = 0 ; i < arr.length ; i++) 
    { 
     if(arr[i] === '2') return true; 
    } 
} 
+0

+1 Merci, mais je cherchais une solution cross-browser ... Besoin de supporter aussi les merdiques malheureusement :) – Legend

+0

Et voilà! solution rapide et améliorée de crappy-browser :) –

Questions connexes