您需要检查该值是否可转换为日期/时间类型,如果不可转换,则返回-1或1(取决于您希望它们位于何处)。
json = ['01-01-2018', '', '04-03-2018', '03-03-2018', '', '04-03-2018', '03-03-2018'];
this.json.sort((obj1: string, obj2: string) => {
if (obj1 === obj2) { return 0; }
if (!obj1) { return 1; }
if (!obj2) { return -1; }
if (new Date(obj1) > new Date(obj2)) { return 1; }
if (new Date(obj1) < new Date(obj2)) { return -1; }
return 0;
});
stackblitz
'01-01-2018', '', '', '', '04-03-2018', '03-03-2018', '', '04-03-2018', '03-03-2018'
'01-01-2018', '03-03-2018', '03-03-2018', '04-03-2018', '04-03-2018', '', '', '', ''
旁注:我建议
momentjs
而不是javascript的
Date
。它的功能更强大,您可以将格式字符串与要传递的值包含在一起,以便正确解析该字符串。