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') 。

4

1 回答 1

2

ECMAscript中没有指定对象键的顺序。如果你有索引键名,你真的应该使用Javascript 数组。

如果你需要一个普通的Object,你可能想和andObject.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++) {
}

但是,您确实应该首先使用Array,这样您就可以跳过脏活。

于 2013-04-04T09:14:46.440 回答