0

M/D/Y の形式で日付を表す JS の文字列の配列があります。M と D はそれぞれ 1 桁または 2 桁です。この配列をソートするコールバック関数を作成するにはどうすればよいですか?

4

2 に答える 2

3

Date.parse() (new Date(string) と同等) は JS 実装間で一貫性がないため、一貫性を保つために最初に日付文字列を手動で解析してから、Minko Gechev が提案するとおりに実行する必要があります。

array.sort(function (d1, d2) {
  function parseDate(str) {
    var parts = str.match(/(\d+)/g);
    // assumes M/D/Y date format
    return new Date(parts[2], parts[0]-1, parts[1]); // months are 0-based
  }
  return parseDate(d1) - parseDate(d2);
});

余談ですが、ほとんどの場合、文字列ではなく Date オブジェクトを格納し、出力に必要なときに Dates を文字列としてフォーマットする方が良いと思います。これにより、この種の操作が簡単になり、あなたのコードもより明確になります。

于 2012-11-24T22:51:29.493 に答える
1

文字列を mdy コンポーネントに分割して、コンポーネントを比較することもできます。

array.sort(function(a,b){
  var a1= a.split('/'), b1=b.split('/');
  if(a1[2]==b1[2]){
    return (a1[0]==b1[0])? a1[1]-b1[1]: a1[0]-b1[0];
  }
  return a1[2]-b1[2];
}
于 2012-11-25T00:37:56.593 に答える