我正在尝试获取对象中的第一个对象。
我有类似
的东西var object = {
task:{
config:'auto',
title :'test'
},
prop:'switch',
time:'5min'
}
我的问题是任务对象的名称可能不同。所以它可能是
var object = {
task2:{
config:'manual',
title :'test2'
},
prop:'switch',
time:'5min'
}
我无法使用object.task1.config
,因为task
名称可能会更改。 task
对象永远是第一个对象。
我想获得任务对象,无论它有什么名称。我该如何做到这一点?谢谢!
答案 0 :(得分:2)
要在现代浏览器中获取对象的第一个属性值,可以使用Object.keys
method:
var myObject = {
whoTheHellKnows: 'foo',
notUsed: 'whatever'
};
var firstProperty = myObject[Object.keys(myObject)[0]];
编辑:如果你不相信属性的排序(你不应该) AND 任务对象是对象中唯一的嵌套对象,你可以依靠类型询问来找到它:
var myObject = {
task123215452: { dahKey: 'foo' },
notUsed: 'whatever',
somethingElse: 42
};
var taskObject;
for (var key in myObject) {
if (typeof myObject[key] === 'object' && !(myObject[key] instanceof Array)) {
taskObject = myObject[key];
break;
}
}
答案 1 :(得分:2)
如果您需要访问第一个密钥并且您不知道密钥名称,那么您应该使用数组而不是对象。对象没有“第一”键的概念。
如果这不是一个选项,则会留下for..in
或Object.keys
,这可能会在某些JavaScript实现上失败,因为语言规范不会强制执行对象键枚举的顺序。但是,在实践中,它将适用于当前的浏览器,因为它们都按照声明的顺序迭代键 citation needed ,这要归功于jbabey 。