У меня есть массив объектов, я хочу отсортировать этот массив по дате в строковом формате. Проблема в том, что этот массив может иметь пустые значения для даты, код, который я использую, работает для массива без пустых значений, но с пустыми значениями он не возвращает правильно отсортированный массив.
Это массив, например
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"
}]
Код, который я использую, -
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;
});
Ожидаемый результат-
[{
_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"
}]
Это ссылка на jsfiddle JS Fiddle Code