代码之家  ›  专栏  ›  技术社区  ›  Andrew Hedges

在JavaScript中,从关联数组中获取第一项的最有效方法是什么?

  •  38
  • Andrew Hedges  · 技术社区  · 16 年前

    我只需要从JavaScript中相当大的关联数组中获取第一项(实际上,就是第一个键)。以下是我目前的做法(使用jQuery):

    getKey = function (data) {
        var firstKey;
        $.each(data, function (key, val) {
            firstKey = key;
            return false;
        });
        return firstKey;
    };
    

    只是猜测,但我想说,必须有一种更好(更有效)的方法来做到这一点。有什么建议吗?

    最新消息:感谢您的富有洞察力的回答和评论!我忘记了我的JavaScript 101,其中规范说不能保证关联数组中的特定顺序。不过,有趣的是,大多数浏览器都是这样实现的。我不希望在获得第一个键之前对数组进行排序,但考虑到我的使用情况,这可能是不可避免的。

    3 回复  |  直到 16 年前
        1
  •  70
  •   Erik Anderson    9 年前

    通过引用从返回的第一个条目,可以避免创建函数 Object.keys() :

    var firstKey = Object.keys(data)[0];
    

    对于排序键列表中的第一个条目,只需向 .sort()

    var firstKey = Object.keys(data).sort()[0];
    
        2
  •  45
  •   Jonathan Lonowski    16 年前

    真的没有 关联数组中的元素(即对象)。您希望获得的唯一顺序是解析器保存元素的顺序,并且不能保证与此一致。

    但是,如果你想 第一个上来的 ,经典的方式实际上可能更简单一些:

    function getKey(data) {
      for (var prop in data)
        return prop;
    }
    

    想要避免继承属性吗?

    function getKey(data) {
      for (var prop in data)
        if (data.propertyIsEnumerable(prop))
          return prop;
    }
    
        3
  •  2
  •   dmnc    12 年前

    Array.prototype.getKey = function() {
      for (var prop in this)
        if (this.propertyIsEnumerable(prop))
          return prop;
    }