1

オブジェクト内の最初のオブジェクトを取得しようとしています。

私は次のようなものを持っています

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

名前に関係なくタスクオブジェクトを取得したい。どうすればそれを達成できますか? ありがとう!

4

2 に答える 2

2

Object.keys最新のブラウザーでオブジェクトの最初のプロパティ値を取得するには、次のメソッドを使用できます。

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

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

実施例

編集:プロパティの順序を信頼していない場合(信頼すべきではありません) 、タスクオブジェクトがオブジェクト内の唯一のネストされたオブジェクトである場合は、タイプの問い合わせに頼って見つけることができます:

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;
    }
}

実施例

于 2013-11-13T20:43:29.157 に答える
2

最初のキーにアクセスする必要があり、キー名がわからない場合は、オブジェクトではなく配列を使用する必要があります。オブジェクトには「最初の」キーという概念がありません。

for..inそれができない場合は、またはが残ります。Object.keysこれは、一部の JavaScript 実装では失敗する可能性があります。これは、言語仕様がオブジェクト キーの列挙の順序を強制していないためです。ただし、実際には、 jbabey のおかげで引用 が必要であると宣言された順序ですべてのキーを反復するため、現在のブラウザーで動作します。

于 2013-11-13T20:48:32.887 に答える