【发布时间】:2013-08-19 00:03:44
【问题描述】:
我有一个具有下一个结构的 JSON 对象:
{
"matters": [
{
"title": "Systems",
"date": "23/08/2010",
"score": 5
},
....
]
}
我想使用sort() 函数对这些数据进行排序。我可以使用score 字段来做到这一点,但我不能使用date 字段对其进行排序。这是我目前正在使用的:
$.getJSON('js/data.json', function(data) {
// data now contains one node with all the matters
$.each(data, function(key, val) {
// val now contains one matter per nodes
val.sort(function (a,b) {
return
parseInt(a.date.substring(6,10)+a.date.substring(3,5)+a.date.substring(0,2)) -
parseInt(b.date.substring(6,10)+b.date.substring(3,5)+b.date.substring(0,2));
});
// Here I get the same array not sorted!
}
});
parseInt() 两个函数都返回一个具有这种格式的整数:
if date=="23/08/2010" => 20100823
我使用警报来检查我是否正确拆分了日期,这很好。无论如何,我无法对数组进行排序。
我正在使用this JSON 文件测试代码。
我做错了什么?
【问题讨论】:
-
你能发布一个两个日期排序错误的例子吗?还是数组根本没有排序?
-
为我工作:jsfiddle.net/nEPTt
-
@CrazyTrain 你是对的。它在那里工作得很好。我怎么可能在我的 localhost 上拥有完全相同的代码并且它不起作用??!
-
不确定。您确定代码完全相同吗? FWIW,我会做
+a.date.split("/").reverse().join("")来处理日期。干净一点。我也可能将处理后的日期存储在对象上,因此不需要继续处理相同的日期。 jsfiddle.net/Pcanx -
唯一的区别是他没有用 $.getJSON 加载 JSON 文件。您是否尝试过在函数中执行 console.log(data) 以查看您是否真的获得了 JSON 对象?
标签: javascript json sorting compare