4

我有一个创建和管理活动的应用程序。我使用 Knockout.js 在可观察数组中保存活动。每当创建新活动时,它都会插入到数组中。活动属性之一是日期。我想在创建新活动后按日期对活动进行排序,以便在 UI 中正确显示。这是我使用的一个函数:

self.Activities.unshift(activity);
self.Activities.sort(function(a, b) {
    var dateA = new Date(a.date() + " 00:00:00");
    var dateB = new Date(b.date() + " 00:00:00");
    return dateA > dateB;
});

它在 Firefox (v 16.0.2) 中完美运行,但在 Chrome (v 23.0.1...)、Safari 或 IE 中无法运行

为什么?解决方法是什么?如果有的话?

4

2 回答 2

7

您传递的比较器函数sort需要返回一个数字。一些浏览器是宽容的并且使用布尔值。

通常你会返回 -1 或 1。类似:

return dateA > dateB ? 1 : -1;
于 2012-12-04T16:53:15.230 回答
1

我使用了错误的日期格式。由于某种原因,Chrome 不喜欢:d/MM/yyyy,当我使用 yyyy/MM/d 时,一切正常

于 2012-12-04T17:14:02.880 回答