扫描JSON技术

时间:2009-08-31 05:43:19

标签: javascript jquery html json

我有这个用于表情符号列表的JSON

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

实际上有3个以上。

在代码的其他部分,我使用smiliesList [“sm-1”]来获取“:)”。但是,我现在想要反其道而行之。我有一个文本字符串,我想通过整个smiliesList并用“sm-1”替换“:)”等等。这意味着使用smiliesList [“:)”]来获得“sm-1”。

所以有两个部分: 1.如何浏览整个JSON? 2.如何获得相反的变量字符串?

现在有办法做到这一点吗?任何解决方法?感谢

2 个答案:

答案 0 :(得分:2)

您可以使用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时必须是careful,因为它遍历通过原型链继承的所有成员,因为总是建议检查对象是否具有直接定义的属性,使用hasOwnProperty函数。

答案 1 :(得分:1)

您还可以使用jQuery帮助您使用更简单的语法:

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

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

});

这将输出到控制台:

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