2017-11-02 14 views
1

私はオブジェクトの配列を持ち、それぞれに日付フィールドがあります。 この配列を今日の最も近い日付順にソートしたいと思います。発生日時に最も近い日付で並べ替えます。

これは、発生した、発生する予定の日付に適用されます。

res.sort(function (a, b) { 
     return new Date(a.toDate) > new Date(b.toDate) ? -1 : new Date(a.toDate) < new Date(b.toDate) ? 1 : 0; 
    }); 

私は現在、このソート機能を使用していますが、日付によるソートのみです。 どうすればいいですか?

+0

あなたが新しいが必要いけません日付 –

+1

'<>'をクリックし、[mcve] – mplungjan

答えて

1

並べ替えの日付と今日の絶対デルタを使用できます。

var array = [{ toDate: '2017-11-01' }, { toDate: '2017-11-02' }, { toDate: '2017-11-03' }, { toDate: '2017-11-04' }, { toDate: '2017-10-01' }, { toDate: '2017-10-11' }, { toDate: '2017-10-31' }, { toDate: '2017-09-01' }, { toDate: '2017-09-20' }]; 
 

 
array.sort(function (a, b) { 
 
    return Math.abs(Date.now() - new Date(a.toDate)) - Math.abs(Date.now() - new Date(b.toDate)); 
 
}); 
 

 
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

あなたは、toDateまでbetwen違いミリ秒で今日の日付を計算し、両方のaとbのために、との違いを比較する必要があります。

var now = new Date(); 
now = now.getTime();  // now in ms 
res.sort(function (a, b) { 
    var aToDate = (new Date(a.toDate)).getTime(); 
    var bToDate = (new Date(b.toDate)).getTime(); 
    return Math.abs(aToDate - now) - Math.abs(bToDate - now); 
}); 
関連する問題