Нет краткого способа напрямую манипулировать «ключами» объекта 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); }
};
Это было определение объекта (вместо многократно используемой функции конструктора) для простоты; редактировать по желанию.