我想弄清楚为什么我的ajax $会改变我打印名单的方式?
我有一个像这样的json字符串:
[{"name":"Adam","len":1,"cid":2},{"name":"Bo","len":1,"cid":1},{"name":"Bob","len":1,"cid":3},{"name":"Chris","len":1,"cid":7},{"name":"James","len":1,"cid":5},{"name":"Michael","len":1,"cid":6},{"name":"Nick","len":1,"cid":4},{"name":"OJ","len":1,"cid":8}]
这里所有名称都按字母顺序排序,但是当它们出来时,它们按“cid”排序?为什么,我该如何改变呢?
这是我的jQuery:
var names = {};
$.getJSON('http://mypage.com/json/names.php', function(data){
$.each(data.courses, function (k, vali) {
names[vali.cid] = vali.name;
});
});
我猜它是因为“名字[vali.cid]”,但我需要那部分保持这种状态。它还能完成吗?
希望得到帮助并提前感谢: - 。)
答案 0 :(得分:1)
当您迭代它时,对象内部的排序没有真正定义或可预测。我建议根据内部属性对数组进行排序:
var names = [];
$.getJSON('http://mypage.com/json/names.php', function(data){
$.each(data.courses, function (k, vali) {
names.push({name: vali.name, cid: vali.cid});
});
names.sort(function(a, b) {
return a.name.localeCompare(b.name);
});
});
现在您有一个已排序的数组,您也可以按可预测的顺序迭代它。
答案 1 :(得分:1)
所有这一切都说明,你可能有3个理由没有得到你期望的结果: