我的对象看起来像这样。
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')中提取第三个和更多子对象的数据。
答案 0 :(得分:2)
ECMAscript中没有对象键的指定顺序。如果你已经为索引编制了索引,你真的应该使用 Javascript数组。
如果您需要一个简单的对象,您可能希望在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++) {
}
但是,你真的应该首先使用数组,这样你就可以跳过肮脏的工作。