【发布时间】:2015-08-09 08:07:03
【问题描述】:
我有一个对象(哈希数组),我需要将它转换成有序的键值对。
这是对象:
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 Select-input 的输入(demo 页面上的实际示例)。 data-property 键/值对或返回它们的函数需要选择类型。到目前为止,我得到了随机顺序的选择选项,但是——正如你想象的那样——我需要它们按值排序....
至于 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(',') + '}';
是否有一些更优雅和直观的方法来实现这个目标?我想将我的数据保存在正确的数据结构中。将其转换为扁平字符串似乎是 hack。
编辑
我必须重新考虑这个问题。我没有使用生成的字符串测试 Jeditable,似乎它将字符串评估为哈希,然后我想要的订单就消失了。所以,这个问题需要不同的方法。也许我需要为 Jeditable 制作自己的数据类型。但这似乎是不同的问题。
【问题讨论】:
-
由于 javascript 不能保证对象中键的顺序,我认为你别无选择。希望这篇文章对你有所帮助stackoverflow.com/questions/5525795/…
标签: javascript jeditable