考虑:

var object = {
  foo: {},
  bar: {},
  baz: {}
}

我该怎么做:

var first = object[0];
console.log(first);

显然,这行不通,因为第一个索引名为foo, 不是0。

console.log(object['foo']);

工作,但我不知道它叫foo。它可以被命名为任何东西。我只想要第一个。


当前回答

只是为了好玩,这在JS 1.8.5中是有效的

var obj = {a: 1, b: 2, c: 3};
Object.keys(obj)[0]; // "a"

这和你看到的顺序是一样的

for (o in obj) { ... }

其他回答

如果你想要简洁的东西,试试:

for (first in obj) break;

alert(first);

包装成函数:

function first(obj) {
    for (var a in obj) return a;
}

没有办法获得第一个元素,因为JavaScript中的“散列”(对象)具有无序属性。最好的方法是将键存储在数组中:

var keys = ["foo", "bar", "baz"];

然后使用它来获得正确的值:

object[keys[0]]

对于对象的第一个键,您可以使用

console.log(Object.keys(object)[0]);//print key's name

价值

console.log(object[Object.keys(object)[0]]);//print key's value

ES6

const [first] = Object.keys(obj)

我的解决方案:

Object.prototype.__index = function(index)
{
    var i = -1;
    for (var key in this)
    {
        if (this.hasOwnProperty(key) && typeof(this[key])!=='function')
            ++i;
        if (i >= index)
            return this[key];
    }
    return null;
}
aObj = {'jack':3, 'peter':4, '5':'col', 'kk':function(){alert('hell');}, 'till':'ding'};
alert(aObj.__index(4));