jquery json以前导零重新排序

时间:2013-05-24 08:14:33

标签: jquery ajax arrays json

我有一堆按周数排序的数据。 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减少对接收数据的工作吗?并按顺序保留订单?

2 个答案:

答案 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是您的已排序对象数组。