ไม่มีวิธีที่กระชับในการจัดการ "คีย์" ของวัตถุ Javascript โดยตรง มันไม่ได้ออกแบบมาเพื่อสิ่งนั้นจริงๆ คุณมีอิสระในการใส่ข้อมูลของคุณในสิ่งที่ดีกว่าวัตถุทั่วไป (หรือ Array ตามที่โค้ดตัวอย่างของคุณแนะนำ) หรือไม่?
ถ้าเป็นเช่นนั้นและหากคำถามของคุณสามารถเปลี่ยนวลีได้ว่า "ฉันควรใช้อ็อบเจกต์ที่มีลักษณะเหมือนพจนานุกรมใดหากต้องการย้ำคีย์ตามลำดับที่เรียง" จากนั้นคุณอาจพัฒนาวัตถุเช่นนี้:
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); }
};
นี่คือนิยามวัตถุ (แทนฟังก์ชันตัวสร้างที่ใช้ซ้ำได้) เพื่อความเรียบง่าย แก้ไขได้ตามต้องการ