Нет краткого способа напрямую управлять «ключами» объекта Javascript. На самом деле он не предназначен для этого. Есть ли у вас свобода поместить данные в нечто лучшее, чем обычный объект (или массив, как предлагает ваш пример кода)?
Если да, и если ваш вопрос можно перефразировать как «Какой словарь-подобный объект мне следует использовать, если я хочу перебирать ключи в отсортированном порядке?» тогда вы можете разработать такой объект:
var a = {
keys : new Array(),
hash : new Object(),
set : function(key, value) {
if (typeof(this.hash[key]) == "undefined") { this.keys.push(key); }
this.hash[key] = value;
},
get : function(key) {
return this.hash[key];
},
getSortedKeys : function() {
this.keys.sort();
return this.keys;
}
};
// sample use
a.set('b',1);
a.set('z',1);
a.set('a',1);
var sortedKeys = a.getSortedKeys();
for (var i in sortedKeys) { print(sortedKeys[i]); }
Если у вас нет контроля над тем, что данные находятся в обычном объекте, эта утилита преобразует обычный объект в ваш полнофункциональный словарь:
a.importObject = function(object) {
for (var i in object) { this.set(i, object); }
};
Для простоты это было определение объекта (вместо многократно используемой функции-конструктора); редактировать по желанию.