考虑:
var object = {
foo: {},
bar: {},
baz: {}
}
我该怎么做:
var first = object[0];
console.log(first);
显然,这行不通,因为第一个索引名为foo, 不是0。
console.log(object['foo']);
工作,但我不知道它叫foo。它可以被命名为任何东西。我只想要第一个。
考虑:
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) { ... }
其他回答
这不会给你第一个,因为javascript对象是无序的,但这在某些情况下是好的。
myObject[Object.keys(myObject)[0]]
ES6
const [first] = Object.keys(obj)
没有办法获得第一个元素,因为JavaScript中的“散列”(对象)具有无序属性。最好的方法是将键存储在数组中:
var keys = ["foo", "bar", "baz"];
然后使用它来获得正确的值:
object[keys[0]]
它们并不是有序的,但是你可以这样做:
var first;
for (var i in obj) {
if (obj.hasOwnProperty(i) && typeof(i) !== 'function') {
first = obj[i];
break;
}
}
. hasownproperty()对于忽略原型对象很重要。
使用下划线时,可以使用_。将第一个对象条目作为键值对,如下所示:
_.pairs(obj)[0]
然后该键可以使用[0]下标,值为[1]