我有一個對象(散列數組),我需要將其轉換爲有序的鍵值對。如何從函數返回有序的鍵/值對?
這是對象:
var places_info = [
{"place_id":180,"name":"Abc","city":"Gotham"},
{"place_id":161,"name":"Def","city":"Sin City"},
{"place_id":178,"name":"Ghi","city":"Timbuktu"},
{"place_id":179,"name":"Jkl","city":"Acapulco"},
{"place_id":174,"name":"Mno","city":"Desire"}
];
我需要的功能(通過name
字母)在同一個返回鍵/值(place_id
/name
)對順序:
{
'180': 'Abc',
'161': 'Def',
'178': 'Ghi',
'179': 'Jkl',
'174': 'Mno'
}
實際使用 :我需要它作爲輸入Jeditable選擇輸入(在demo頁面上的實際示例)。 data
- 屬性鍵/值對的選擇類型需求或返回它們的函數。到目前爲止,我有隨機順序的選擇選項,但 - 正如你可能想象的 - 我需要他們按價值排序....
至於Jeditable的數據可能只是一個假哈希(字符串形成JSON鍵/值對),我唯一的解決方案是這樣的:
var arr = new Array;
for (i in places_info) {
arr.push("'" + places_info[i].place_id + "':'" + places_info[i].name + "'");
}
var uglyString = '{' + arr.join(',') + '}';
是否有一些更優雅和直觀的方法來實現這樣的目標?我想讓我的數據保持正確的數據結構。將它轉換爲平坦的字符串看起來像是黑客。
編輯
我必須重新考慮這個問題。我沒有用生成的字符串測試Jeditable,並且似乎將字符串轉化爲哈希,然後我的期望順序消失了。所以,這個問題需要不同的方法。也許我需要爲Jeditable製作自己的數據類型。但這似乎是不同的問題。
由於JavaScript不保證你在一個對象的鍵的順序,我想你沒有別的選擇。我希望,這篇文章可能會幫助你一點http://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order – Rudra