考虑:
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。它可以被命名为任何东西。我只想要第一个。
当前回答
这不会给你第一个,因为javascript对象是无序的,但这在某些情况下是好的。
myObject[Object.keys(myObject)[0]]
其他回答
对于对象的第一个键,您可以使用
console.log(Object.keys(object)[0]);//print key's name
价值
console.log(object[Object.keys(object)[0]]);//print key's value
如果你想要简洁的东西,试试:
for (first in obj) break;
alert(first);
包装成函数:
function first(obj) {
for (var a in obj) return a;
}
根据CMS的回答。我没有直接得到值,而是在它的下标处取键,并使用this来获得值:
Object.keyAt = function(obj, index) {
var i = 0;
for (var key in obj) {
if ((index || 0) === i++) return key;
}
};
var obj = {
foo: '1st',
bar: '2nd',
baz: '3rd'
};
var key = Object.keyAt(obj, 1);
var val = obj[key];
console.log(key); // => 'bar'
console.log(val); // => '2nd'
它们并不是有序的,但是你可以这样做:
var first;
for (var i in obj) {
if (obj.hasOwnProperty(i) && typeof(i) !== 'function') {
first = obj[i];
break;
}
}
. hasownproperty()对于忽略原型对象很重要。
如果对象的顺序很重要,你应该修改JSON模式以将对象存储在数组中:
[
{"name":"foo", ...},
{"name":"bar", ...},
{"name":"baz", ...}
]
或者:
[
["foo", {}],
["bar", {}],
["baz", {}]
]
正如Ben Alpert所指出的,Javascript对象的属性是无序的,如果你期望它们按照在对象文字中指定的顺序枚举——没有“first”属性,那么你的代码就会被破坏。