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