Bir Javascript nesnesinin "anahtarlarını" doğrudan değiştirmenin kısa bir yolu yoktur. Gerçekten bunun için tasarlanmadı. Verilerinizi normal bir nesneden (veya örnek kodunuzun önerdiği gibi bir Diziden) daha iyi bir şeye yerleştirme özgürlüğüne sahip misiniz?
Öyleyse ve sorunuz "Anahtarlar üzerinde sıralı sırayla yinelemek istiyorsam hangi sözlük benzeri nesneyi kullanmalıyım?" o zaman şöyle bir nesne geliştirebilirsiniz:
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]); }
Verilerin normal bir nesnede olduğu gerçeği üzerinde hiçbir kontrolünüz yoksa, bu yardımcı program normal nesneyi tam işlevli sözlüğünüze dönüştürür:
a.importObject = function(object) {
for (var i in object) { this.set(i, object); }
};
Bu, basitlik için bir nesne tanımıydı (yeniden kullanılabilir bir yapıcı işlevi yerine); irade ile düzenleyin.