You can easily use the sort
function with a custom comparator function:
// assuming you have an array of Date objects - everything else is crap:
var arr = [new Date(2012, 7, 1), new Date(2012, 7, 4), new Date(2012, 7, 5), new Date(2013, 2, 20)];
var diffdate = new Date(2012, 7, 11);
arr.sort(function(a, b) {
var distancea = Math.abs(diffdate - a);
var distanceb = Math.abs(diffdate - b);
return distancea - distanceb; // sort a before b when the distance is smaller
});
// result:
[2012-08-05, 2012-08-04, 2012-08-01, 2013-03-20]
To get only results before or after the diffdate
, you can filter the array for that:
var beforedates = arr.filter(function(d) {
return d - diffdate < 0;
}),
afterdates = arr.filter(function(d) {
return d - diffdate > 0;
});
If you have your custom array with the {the_date_object: new Date(...)}
objects, you will need to adapt the sort algorithm with
var distancea = Math.abs(diffdate - a.the_date_object);
var distanceb = Math.abs(diffdate - b.the_date_object);