जावास्क्रिप्ट ऑब्जेक्ट की "कुंजियों" को सीधे हेरफेर करने का कोई संक्षिप्त तरीका नहीं है। यह वास्तव में उस के लिए डिज़ाइन नहीं किया गया है। क्या आपको अपने डेटा को एक नियमित वस्तु (या एक ऐरे) से बेहतर बनाने की स्वतंत्रता है, जैसा कि आपका नमूना कोड बताता है)?
यदि ऐसा है, और यदि आपका प्रश्न "क्या शब्दकोश जैसी वस्तु का उपयोग करना चाहिए, तो क्या मुझे छांटे गए क्रम में कुंजियों पर पुनरावृति करना चाहिए?" तो आप इस तरह एक वस्तु विकसित कर सकते हैं:
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); }
};
यह सादगी के लिए एक वस्तु परिभाषा (एक पुन: प्रयोज्य निर्माण कार्य के बजाय) थी; वसीयत में संपादित करें।