Javascript 按时间顺序排列的Typescript字符串日期格式

Javascript 按时间顺序排列的Typescript字符串日期格式,javascript,typescript,Javascript,Typescript,我想把字符串日期按时间顺序排序,好吗 假设有一个数组对象,如 data = [ {id: "1", date: "18.08.2018"} {id: "2", date: "05.01.2014"} {id: "3", date: "01.01.2014"} {id: "4", date: "20.05.2016"} ] 预计是,, 当我点击按钮时,数据应该按时间顺序返回,如 data = [ {id: "3", date: "01.01.2014"}

我想把字符串日期按时间顺序排序,好吗

假设有一个数组对象,如

data = [
{id: "1", date: "18.08.2018"}
{id: "2", date: "05.01.2014"}
{id: "3", date: "01.01.2014"}
{id: "4", date: "20.05.2016"}
]
预计是,, 当我点击按钮时,数据应该按时间顺序返回,如

 data = [
           {id: "3", date: "01.01.2014"}
           {id: "2", date: "05.01.2014"}
           {id: "4", date: "20.05.2016"}
           {id: "1", date: "18.08.2018"}  

    ]
我尝试过这个方法,但它只根据日期和月份进行排序,而不考虑年份


您可以通过将它们转换为日期并进行比较来对它们进行排序:

让数据=[{ id:1, 日期:2018年8月18日 }, { id:2, 日期:2014年1月5日 }, { id:3, 日期:2014年1月1日 }, { id:4, 日期:2016年5月20日 }, ] //asc console.logdata.sorta,b=>{ var d1=a.date.split'.'的值, d2=b.日期.拆分'; 返回新日期d1[2],d1[1]-1,d1[0]-new Dated2[2],d2[1]-1,d2[0]; //-------^年-^月-^日 }; //描述 console.logdata.sorta,b=>{ var d1=a.date.split'.'的值, d2=b.日期.拆分'; 返回新日期d2[2],d2[1]-1,d2[0]-new Dated1[2],d1[1]-1,d1[0];
}; 使用基本字符串比较

在ascii下比较每个字符

data.sortfunctiona,b{返回b.date-a.date}

不工作,因为

b、 日期

从天到月再到年都是负数

表示2010年10月30日-2019年10月19日大于0

“3'-'1'>0返回1

表示2010年10月30日-2019年10月31日小于0

'3'-'3'=0返回'0'>'1'-->返回-1

a、 日期b.date是字符串使用-有时不起作用,因为某处不起作用

将字符串强制转换为ascii将得到Nan

让数据=[{ id:1, 日期:2018年8月18日 }, { id:2, 日期:2014年1月5日 }, { id:3, 日期:2014年1月1日 }, { id:4, 日期:2016年5月20日 }, ] var Rs=data.sorta,b=>{ 变量d1=a.date.split'; var d2=b.date.split'; 返回d1[2]+d1[1]+d1[0]。localeCompared2[2]+d2[1]+d2[0]; }; //使用基本字符串比较 //在ascii下比较每个字符 var S1=苹果; var S2=Apzle; var S3=Apzle; var S4=Apzle; console.logS1.localeCompareS2; console.logS2.localeCompareS1; console.logS3.localeCompareS3; console.logS3.localeCompareS4;
控制台.logRs;它在javascript中运行良好,但在typescript中不起作用,例如算术运算的左侧必须是“any”、“number”或枚举类型。
data.sort(function(a,b){return b.date - a.date});