对象问题中的javascript对象

时间:2013-11-13 20:38:32

标签: javascript object

我正在尝试获取对象中的第一个对象。

我有类似

的东西
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对象永远是第一个对象。

我想获得任务对象,无论它有什么名称。我该如何做到这一点?谢谢!

2 个答案:

答案 0 :(得分:2)

要在现代浏览器中获取对象的第一个属性值,可以使用Object.keys method

var myObject = {
    whoTheHellKnows: 'foo',
    notUsed: 'whatever'
};

var firstProperty = myObject[Object.keys(myObject)[0]];

Working example

编辑:如果你不相信属性的排序(你不应该) 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;
    }
}

Working example

答案 1 :(得分:2)

如果您需要访问第一个密钥并且您不知道密钥名称,那么您应该使用数组而不是对象。对象没有“第一”键的概念。

如果这不是一个选项,则会留下for..inObject.keys,这可能会在某些JavaScript实现上失败,因为语言规范不会强制执行对象键枚举的顺序。但是,在实践中,它将适用于当前的浏览器,因为它们都按照声明的顺序迭代键 citation needed ,这要归功于jbabey