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

Andrew Hedges picture Andrew Hedges · Oct 7, 2008 · Viewed 45.7k times · Source

I need to get just the first item (actually, just the first key) off a rather large associative array in JavaScript. Here's how I'm doing it currently (using jQuery):

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

Just guessing, but I'd say there's got to be a better (read: more efficient) way of doing this. Any suggestions?

UPDATE: Thanks for the insightful answers and comments! I had forgotten my JavaScript 101, wherein the spec says you're not guaranteed a particular order in an associative array. It's interesting, though, that most browsers do implement it that way. I'd prefer not to sort the array before getting that first key, but it may be unavoidable given my use case.

Answer

Erik Anderson picture Erik Anderson · Oct 28, 2014

You can avoid having to create a function by referencing the first entry returned from Object.keys():

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

For the first entry from a sorted key list, simply add a call to the .sort() method:

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