Сканирование через технику JSON - PullRequest
1 голос
/ 31 августа 2009

У меня есть этот JSON для списка смайликов

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

На самом деле их намного больше, чем 3.

В другой части кода я использую smiliesList ["sm-1"], чтобы получить ":)". Тем не менее, я хочу получить прямо сейчас. У меня есть текстовая строка, я хочу просмотреть весь список smiliesList и заменить ":)" на "sm-1" и так далее. Это означает использование smiliesList [":)"] для получения "sm-1".

Итак, есть 2 части: 1. Как пройти весь JSON? 2. Как получить противоположную переменную string?

Теперь есть ли способ сделать это? Любое решение? Спасибо

Ответы [ 2 ]

2 голосов
/ 31 августа 2009

Вы можете перебирать свойства объекта, используя оператор for ... in :

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

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

Вы должны быть осторожными при использовании for ... in, потому что он перебирает все члены, которые были унаследованы через цепочку прототипов, для этого всегда рекомендуется проверять, есть ли у объекта свойство определяется напрямую с помощью функции hasOwnProperty .

1 голос
/ 07 августа 2012

Вы также можете использовать jQuery, чтобы помочь вам с более простым синтаксисом:

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

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

});

это выведет на консоль:

sm-1 :)
sm-2 :(
sm-3 ;)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...