我有一堆按周数排序的数据。 php脚本使用
$week = date('W', strtotime($date));
获得一个领先零的周数。 (那不是规范,但这就是我得到的)。 问题是从6到15这一周的范围。这将导致数组键如:06,07,08,09,10,11,12,13,14,15。我的页面收到的json是这样的:10,11,12,13,14,15,06,07,08,09 即使我发送它,数组在PHP脚本中也是正确的。 Firebug控制台显示收到的数据,如:
{"06":{"my":6.6,"other":5.5},"07":{"my":5.9,"other":5.5},"08":{"my":5.8,"other":5.2},"09":{"my":6.2,"other":5.6},"10":{"my":6.1,"other":5.6},"11":{"my":6,"other":5.3},"12":{"my":6.1,"other":5.6},"13":{"my":5.9,"other":5.7},"14":{"my":5.8,"other":5.7},"15":{"my":6.5,"other":5.7},"16":{"my":6.4,"other":5.7}}
这是正确的。在同一个控制台中,你可以看到json,导致错误的顺序如下:10,11,12,13,14,15,06,07,08,09。这也是顺序如何
$.each(scores, function(week, scores) {
会迭代它。我怀疑尾随零被视为字符串,因此在数字之后结束。
我可以以某种方式欺骗jQuery减少对接收数据的工作吗?并按顺序保留订单?
答案 0 :(得分:0)
而不是试图用javascript客户端解决问题。我只需要摆脱这个领先的零点。确保没有整数字符串转换... 这很容易。创建周数后..
$week = date('W', strtotime($date));
$def_array[(int)$week][$from] = round($scores['total'] / 10, 1);
正如你所看到的,我已将$ week转换为int,它会丢失尾随零,从而失去所有值的顺序。
答案 1 :(得分:-1)
首先将所有对象加载到数组
var tmpArr = [];
var sortedObjArr = [];
$.each(scores, function(week, scores) {
tmpArr.push(parseInt(week));
}
tmpArr = tmpArr.sort();
for(var i in tmpArr){
sortedObjArr.push({i:scores[i]});
}
sortedObjArr是您的已排序对象数组。