【问题标题】:javascript - how to get object name or associative array index name?javascript - 如何获取对象名称或关联数组索引名称?
【发布时间】:2012-03-10 22:46:55
【问题描述】:

我有一个这样的 JSON 对象:

var list = {'name1' : {'element1': 'value1'}, 'name2' : {'element1': 'value2'});

如何提取所有 nameX 字符串值?

例如,假设我想将它们连接在一个字符串中,例如:“name1 name2”

在任何解决方案中使用 jQuery 都可以。请指教...

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:
    var names = Object.keys(list);
    

    【讨论】:

      【解决方案2】:

      要获取一个对象的键,ES5中有Object.keys,它返回一个数组:

      Object.keys(list).join(" "); // "name1 name2"
      

      如果要过滤密钥,可以使用.filter

      Object.keys(list).filter(function(key) {
        return key.indexOf("name") === 0; // filter keys that start with "name"
      }).join(" "); // "name1 name2"
      

      【讨论】:

      • 有一点需要注意——keys 方法是在 1.8.5+ 中引入的。如果您需要向后兼容性,您可能更喜欢使用 underscore.js 中的 _.keys shim 之类的替代方案(@mVChr 的答案提供了另一个)
      【解决方案3】:

      对于不支持keys的旧版浏览器:

      var list_keys = []
      for (var n in list) {
          list_keys.push(n)
      }
      var names = list_keys.join(' ');
      

      【讨论】:

      • 您应该包含一个 hasOwnProperty 测试:if (list.hasOwnProperty(n))
      【解决方案4】:

      既然你说基于 jQuery 的解决方案就可以了,这里有一种不需要 ES5 shim 的 jQuery 方法:

      var itemString = $.map(list, function(item, key) {
          return(key);
      }).join(" ");
      

      这里的工作演示:http://jsfiddle.net/jfriend00/a2AMH/

      jQuery.map() 迭代对象的属性或数组的项,并根据我们传递给它的自定义函数构建一个新数组。然后,我们只需将该数组的结果连接到一个字符串中。你可以阅读jQuery.map()here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多