4

アクティビティを作成および管理するアプリケーションがあります。Knockout.jsを使用して、監視可能な配列でアクティビティを保持します。新しいアクティビティが作成されるたびに、それは配列に挿入されます。アクティビティプロパティの1つは日付です。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 に答える