2009-08-31 11 views
1

J'ai ce JSON pour smileys listeparcourons technique JSON

var smiliesList = { 
"sm-1":":)", 
"sm-2":":(", 
"sm-3":";)" 
} 

Il y a beaucoup plus que 3 en fait.

Dans une autre partie du code j'utilise smiliesList ["sm-1"] pour obtenir ":)". Cependant, je veux obtenir le contraire maintenant. J'ai une chaîne de texte, je veux parcourir l'ensemble de smiliesList et remplacer ":)" par "sm-1" et ainsi de suite. Cela signifie utiliser smiliesList [":)"] pour obtenir "sm-1". Donc il y a 2 parties: 1. Comment passer par le JSON entier? 2. Comment obtenir la chaîne de variables opposée?

Maintenant, existe-t-il un moyen de le faire? Une solution de contournement? Merci

Répondre

1

Vous pouvez également utiliser jQuery pour vous aider avec une syntaxe plus facile:

var smiliesList = {"sm-1":":)","sm-2":":(","sm-3":";)"} 
$.each(smiliesList, function(index, value){ 

    console.log(index + " " + value); 

}); 

cette volonté à la console:

sm-1 :) 
sm-2 :(
sm-3 ;) 
2

Vous pouvez itérer sur les propriétés de l'objet, en utilisant l'instruction for...in:

function getKeyByValue (obj, val) { 
    for (var key in obj) { 
    if (obj.hasOwnProperty(key) && obj[key] == val) { 
     return key; 
    } 
    } 
} 

getKeyByValue (smiliesList, ":)"); // sm-1 

Vous devez être careful lors de l'utilisation pour ... en car à travers tous itère les membres qui ont été hérités par le prototype chaîne, car il est toujours recommandé de vérifier si l'objet a la propriété définie directement, en utilisant la fonction hasOwnProperty.

Questions connexes