我有一个对象(散列数组),我需要将其转换为有序的键值对。如何从函数返回有序的键/值对?
这是对象:
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