簡體   English   中英

從JavaScript中的關聯數組中獲取第一個項目的最有效方法是什么?

[英]What is the most efficient way to get the first item from an associative array in JavaScript?

我需要從JavaScript中的一個相當大的關聯數組中獲取第一個項目(實際上,只是第一個鍵)。 這是我當前正在做的事情(使用jQuery):

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

只是猜測,但我會說這是一個更好的(閱讀:更有效)的方式來做到這一點。 有什么建議?

更新:感謝有見地的答案和評論! 我忘記了我的JavaScript 101,其中規范說你不能保證關聯數組中的特定順序。 但有趣的是,大多數瀏覽器確實以這種方式實現它。 在獲得第一個密鑰之前,我不想對數組進行排序,但考慮到我的用例,這可能是不可避免的。

您可以通過引用Object.keys()返回的第一個條目來避免創建函數:

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

對於排序鍵列表中的第一個條目,只需添加對.sort()方法的調用:

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

關聯數組(即對象)中實際上沒有第一個最后一個元素。 您可以希望獲得的唯一順序是解析器保存元素的順序 - 並且不保證與此一致。

但是,如果你想要第一個出現 ,那么經典的方式實際上可能會更容易一些:

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

想避免繼承屬性?

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

除了Jonathan的解決方案,我們還可以擴展默認的數組功能:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM