【问题标题】:How do you dynamically access attributes of a JSON Object如何动态访问 JSON 对象的属性
【发布时间】:2011-01-18 10:18:27
【问题描述】:

我有一个两级 JSON 对象

前:

var regexDefs = {

  "alpha": {
    "regex": /^[A-Z]+$/,
    "errMsg": "Alpha Only"
  }
}

我想做一些类似于在数组中搜索键的事情。

(使用 jQuery 的 inArray)

var key = "alpha";
alert($.inArray(key,regexDefs));

如果键在数组中,那么我想做

if(regexDefs[key].regex.test){ return true; }

我知道我可能缺少一些时髦的东西,因为这是一个对象而不是数组...

在做

$.inArray(key,regexDefs)

返回未定义

=/

有什么想法吗?

【问题讨论】:

    标签: jquery json search arrays key


    【解决方案1】:

    最准确的方法是

    if ("alpha" in regexDefs)
    {
    }
    

    即使 alpha 是一个虚假值,例如 0nullNaNfalse 等,这也会评估为 true。

    你可以对变量做同样的事情:

    var key = "alpha";
    if (key in regexDefs)
    {
    }
    

    【讨论】:

      【解决方案2】:

      只要做:

      if (regexDefs[key]) {
          // Present.
      } else {
          // Not present.
      }
      

      要了解有关 JSON 的更多信息,我可以向您推荐 Mastering JSON

      【讨论】:

      • 检查 Andy E 的答案以获得更强大的方法:)
      • 倒数 +1 似乎是有序的,如果您确定 key 不会是虚假值,您的方法将同样优雅地工作:-)
      【解决方案3】:
      if (regexDefs['alpha']) {
          // alpha exists in regexDefs
      });
      

      【讨论】:

        【解决方案4】:

        如果密钥存储在一个名为 key 的变量中,您可以使用类似:

        if(regexDefs[key]) {
            // do your thing
        }
        

        【讨论】:

          猜你喜欢
          • 2016-10-13
          • 2011-06-15
          • 1970-01-01
          • 2011-08-10
          • 2019-09-01
          • 1970-01-01
          • 2013-07-21
          • 1970-01-01
          相关资源
          最近更新 更多