0

我有一堆按周数排序的数据。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 对接收到的数据做更少的工作吗?并保持原样?

4

2 回答 2

0

而不是试图用javascript客户端解决问题。我只需要摆脱这个前导零。确保没有整数字符串转换......这很容易。创建周数后..

$week = date('W', strtotime($date));
$def_array[(int)$week][$from] = round($scores['total'] / 10, 1);

如您所见,我已将 $week 转换为 int,它会丢失尾随零,从而丢失所有值的顺序。

于 2013-05-24T08:50:11.047 回答
-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 是您的排序对象数组。

于 2013-05-24T08:30:45.087 回答