Javascript 按字母排序,然后按数字排序

Javascript 按字母排序,然后按数字排序,javascript,string,algorithm,typescript,sorting,Javascript,String,Algorithm,Typescript,Sorting,我必须对包含日期和单词的数组进行排序。所有数据都被视为字符串 INPUT data[4,a,3,a,a,2] OUTPUT(ascending expected) data[a,a,a,2,3,4] 但升序时,它会先对数字排序,然后对日期排序,反之亦然。这与我想要实现的恰恰相反。如何让它在升序时先对字母进行排序,在降序时先对数字进行排序测试第一个字符是否是数字 如果两者的比较结果相同,请定期比较,否则请先移动非数字: var数据=[“2020-04-07”, "2021-06-30", "

我必须对包含日期和单词的数组进行排序。所有数据都被视为字符串

INPUT
data[4,a,3,a,a,2]

OUTPUT(ascending expected)
data[a,a,a,2,3,4]

但升序时,它会先对数字排序,然后对日期排序,反之亦然。这与我想要实现的恰恰相反。如何让它在升序时先对字母进行排序,在降序时先对数字进行排序

测试第一个字符是否是数字

如果两者的比较结果相同,请定期比较,否则请先移动非数字:

var数据=[“2020-04-07”,
"2021-06-30",
"2019-12-30",
“日期已过”,
“日期已过”,
“通过日期”];
功能专用端口ASC(a、b){
var isNumberRegEx=/^\d/;
if(isNumberRegEx.test(a[0])==isNumberRegEx.test(b[0])){
返回a.localeCompare(b);
}
否则{
返回isNumberRegEx.test(a[0])?1:-1;
}
}
功能专用端口DSC(a、b){
var isNumberRegEx=/^\d/;
if(isNumberRegEx.test(a[0])==isNumberRegEx.test(b[0])){
返回b.localeCompare(a);
}
否则{
返回isNumberRegEx.test(a[0])?-1:1;
}
}
console.log(data.sort(specialSortAsc));

console.log(data.sort(specialSortDsc))传递的日期应在下方,以便下降
else
部分
specialSortDsc
中更改的内容我切换了退货订单。