0

私はこのように見えるオブジェクトを持っています。

foo = {
    0 : {
        'bar' : 'baz',
        'qux' : 'quux',
        'this' : { 'hello' : 'yes' } // this is the object I want to extract
    }
    1 : {
        'bar' : 'baz',
        'qux' : 'quux',
        'this' : { 'hello' : 'yes' } // extract
    }
    2 : {
        'bar' : 'baz',
        'qux' : 'quux',
        'this' : { 'hello' : 'yes' }, // extract
        'that' : { 'hello' : 'no' } // extract
    }
}

このような for ループを使用すると、すべてのオブジェクトをループできます。

for(var i in foo){
  ...
}

問題は、各オブジェクトの ('this')よりも 3 番目以降の子オブジェクトからのみデータを取得したいことです。

4

1 に答える 1

2

ECMAscript では、オブジェクト キーの指定された順序はありません。それにもかかわらず、キー名にインデックスを付けている場合は、 JavaScript 配列を使用する必要があります。

プレーンなObjectが必要な場合は、andのようにObject.keys()横に使用することをお勧めします。Array.prototype.forEach.sort()

Object.keys( foo ).sort().forEach(function( i ) {
});

ES5 に頼れない場合は、手動で作業を行うしかありません。

var keys = [ ];

for(var key in foo) {
    if( foo.hasOwnProperty( key ) ) {
        keys.push( key );
    }
}

keys.sort();

for(var i = 0, len = keys.length; i < len; i++) {
}

ただし、最初は配列を使用するだけでよいので、面倒な作業をスキップできます。

于 2013-04-04T09:14:46.440 に答える