I have an array of objects, I want to sort this array according to date which is in string format. The problem is this array can have blank values for a date, the code I am using works for array without blank values, but with blank values, it doesn't return properly sorted array.
This is array eg-
var array =
[{
"_id" : "5f6a0c223932cd1f7ae1d48c",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : "Fri Oct 16 2020 00:00:00"
},
{
"_id" : "5f6990b94130056cd6034091",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : ""
},
{
"_id" : "5f6a0c2a3932cd1f7ae1d48d",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : "Fri Nov 27 2020 00:00:00"
},
{
"_id" : "5f6a0c453932cd1f7ae1d48e",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : "Thu Oct 22 2020 00:00:00"
},
{
"_id" : "5f6a0c4d3932cd1f7ae1d48f",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : "Thu Nov 19 2020 00:00:00"
},
{
"_id" : "5f6a0c5a3932cd1f7ae1d490",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : "Thu Dec 03 2020 00:00:00"
},
{
"_id" : "5f1bd948a1db382540356394",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : "Mon Jul 13 2020 20:30:00"
},
{
"_id" : "5f698ca54130056cd603408e",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : "Fri Sep 25 2020 00:00:00"
},
{
"_id" : "5f698cae4130056cd603408f",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : "Thu Sep 24 2020 00:00:00"
},
{
"_id" : "5f698cb64130056cd6034090",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : "Wed Sep 23 2020 00:00:00"
},
{
"_id" : "5f6a0c163932cd1f7ae1d48b",
"user_id" : "5e82f6d1ca6f2a3b4d2212a1",
"current_term_renewal_date" : "Sun Nov 08 2020 00:00:00"
}]
The code I am using is -
array.sort(function compare(a, b) {
var dateA = new Date(a.current_term_renewal_date);
var dateB = new Date(b.current_term_renewal_date);
return dateA - dateB;
});
The expected result-
[{
_id: "5f1bd948a1db382540356394",
current_term_renewal_date: "Mon Jul 13 2020 20:30:00",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}, {
_id: "5f698cb64130056cd6034090",
current_term_renewal_date: "Wed Sep 23 2020 00:00:00",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}, {
_id: "5f698cae4130056cd603408f",
current_term_renewal_date: "Thu Sep 24 2020 00:00:00",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}, {
_id: "5f698ca54130056cd603408e",
current_term_renewal_date: "Fri Sep 25 2020 00:00:00",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}, {
_id: "5f6a0c223932cd1f7ae1d48c",
current_term_renewal_date: "Fri Oct 16 2020 00:00:00",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}, {
_id: "5f6a0c453932cd1f7ae1d48e",
current_term_renewal_date: "Thu Oct 22 2020 00:00:00",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}, {
_id: "5f6a0c163932cd1f7ae1d48b",
current_term_renewal_date: "Sun Nov 08 2020 00:00:00",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}, {
_id: "5f6a0c4d3932cd1f7ae1d48f",
current_term_renewal_date: "Thu Nov 19 2020 00:00:00",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}, {
_id: "5f6a0c2a3932cd1f7ae1d48d",
current_term_renewal_date: "Fri Nov 27 2020 00:00:00",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}, {
_id: "5f6a0c5a3932cd1f7ae1d490",
current_term_renewal_date: "Thu Dec 03 2020 00:00:00",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}, {
_id: "5f6990b94130056cd6034091",
current_term_renewal_date: "",
user_id: "5e82f6d1ca6f2a3b4d2212a1"
}]
This is the link for jsfiddle JS Fiddle Code