Немає стислого способу безпосередньо маніпулювати "клавішами" об'єкта 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); }
};
Це було визначення об'єкта (замість функції конструктора для багаторазового використання) для простоти; редагувати за бажанням