Coming from the previous post ( http://www.developerscloud.org/2014/05/decoding-underscore-js-sortby-sorting.html), where we have used the underscore to sort the array, with the limitation of sorting in descending order, I will show you in below post how to sort effectively using javascript native functionality.
Lets use the same array we have in the previous post.
var datesArray =
['6-01-2014','2-01-2014', '4-01-2014', '5-01-2014', '3-01-2014', '1-01-2014'];
datesArray is now
["6-01-2014", "2-01-2014", "4-01-2014", "5-01-2014", "3-01-2014", "1-01-2014"]
Running the for loop making each item of array a date type object.
for(var i = 0; i< datesArray.length;
i++){
datesArray[i]
= new Date(datesArray [i]);
}
After which datesArray will become
[Sun Jun 01 2014
00:00:00 GMT+0530 (India Standard Time),
Sat Feb 01 2014
00:00:00 GMT+0530 (India Standard Time),
Tue Apr 01 2014
00:00:00 GMT+0530 (India Standard Time),
Thu May 01 2014
00:00:00 GMT+0530 (India Standard Time),
Sat Mar 01 2014
00:00:00 GMT+0530 (India Standard Time),
Wed Jan 01 2014
00:00:00 GMT+0530 (India Standard Time)]
// below are the
comparison function that will result in dates being sorted in
// ASCENDING & DESCENDING
order. As you can see, JavaScript's native comparison operators
// can be used to
compare dates. Avoiding the use of sort by of underscore.
//Descending
var date_sort_desc =
function (date1, date2) {
if
(date1 > date2) return -1;
if
(date1 < date2) return 1;
return
0;
};
//Ascending
var date_sort_asc =
function (date1, date2) {
if
(date1 > date2) return 1;
if
(date1 < date2) return -1;
return
0;
};
datesArray.sort(date_sort_desc);
[Sun Jun 01 2014 00:00:00 GMT+0530 (India Standard Time),
Thu May 01 2014 00:00:00 GMT+0530 (India Standard Time),
Tue Apr 01 2014 00:00:00 GMT+0530 (India Standard Time),
Sat Mar 01 2014 00:00:00 GMT+0530 (India Standard Time),
Sat Feb 01 2014 00:00:00 GMT+0530 (India Standard Time),
Wed Jan 01 2014 00:00:00 GMT+0530 (India Standard Time)]
datesArray.sort(date_sort_asc);
[Wed Jan 01 2014
00:00:00 GMT+0530 (India Standard Time),
Sat Feb 01 2014 00:00:00 GMT+0530 (India
Standard Time),
Sat Mar 01 2014 00:00:00 GMT+0530 (India
Standard Time),
Tue Apr 01 2014 00:00:00 GMT+0530 (India
Standard Time),
Thu May 01 2014 00:00:00 GMT+0530 (India
Standard Time),
Sun Jun 01 2014 00:00:00 GMT+0530 (India
Standard Time)]
Converting back the array into the original format of dates.
for(var i = 0;
i<x.length;i++){
datesArray[i]
= datesArray[i].toISOString().slice(0, 10);
}
The formatted output result.
datesArray
["2013-12-31", "2014-01-31", "2014-02-28", "2014-03-31", "2014-04-30", "2014-05-31"]
I hope you will all find it helpful.
Comments
Post a Comment
Important - Make sure to click the Notify Me check-box below the comment to be notified of follow up comments and replies.