【问题标题】:Scan through JSON technique通过 JSON 技术扫描
【发布时间】:2009-08-31 05:43:18
【问题描述】:

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

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

有很多超过 3 个。

在代码的另一部分,我使用 smiliesList["sm-1"] 来获取 ":)"。但是,我现在想得到相反的结果。我有一个文本字符串,我想遍历整个 smiliesList 并将“:)”替换为“sm-1”等等。这意味着使用 smiliesList[":)"] 来获取“sm-1”。

所以有两个部分: 1.如何遍历整个JSON? 2、如何得到相反的变量字符串?

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

【问题讨论】:

    标签: javascript jquery html json


    【解决方案1】:

    您可以使用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 函数。

    【讨论】:

      【解决方案2】:

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

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

      这将输出到控制台:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多