Javascript 排序混合数组
我有一个混合数组,我需要先对非数值排序,然后再对数值排序 这是我的数据Javascript 排序混合数组,javascript,typescript,Javascript,Typescript,我有一个混合数组,我需要先对非数值排序,然后再对数值排序 这是我的数据 [{Description:"c"},{Description:"a"},{Description:"1"},{Description:"b"},{Description:"2"},{Description:"11"}] 我想把排序后的输出作为 A. B C 1. 2. 十一, 我所尝试的: (如果为空,
[{Description:"c"},{Description:"a"},{Description:"1"},{Description:"b"},{Description:"2"},{Description:"11"}]
我想把排序后的输出作为
A.
B
C
1.
2.
十一,
我所尝试的:
(如果为空,则检查Utils.Inue)
.sort(函数(a、b){
返回Utils.Inue(parseFloat(a.Description!))| | Utils.Inue(b.Description!)?a.Description!b.Description!?1:0:parseFloat(a.Description!)-parseFloat(b.Description!);
})
但是输出结果是1 2 11 a b c您可以检查该值是否为有限值并将数字排序到底部
const
数组=[{Description:“c”},{Description:“a”},{Description:“11”},{Description:“b”},{Description:“2”},{Description:“1”}];
sort({Description:a},{Description:b})=>
isFinite(a)-isFinite(b)||
a-b||
+(a>b)| |-(a
.as console wrapper{max height:100%!important;top:0;}
您可以检查值是否为有限值,并将数字排序到底部
const
数组=[{Description:“c”},{Description:“a”},{Description:“11”},{Description:“b”},{Description:“2”},{Description:“1”}];
sort({Description:a},{Description:b})=>
isFinite(a)-isFinite(b)||
a-b||
+(a>b)| |-(a
.as控制台包装{最大高度:100%!重要;顶部:0;}
var obj=[{Description:“c”},{Description:“a”},{Description:“1”},{Description:“b”},{Description:“2”},{Description:“11”}];
变量sortArray=(对象排序)((a,b)=>{
设res=0
如果(!isNaN(a.说明)){
返回(+a.说明)-(b.说明);
}否则{
如果(a.说明>b.说明){
res=1;
}否则如果(a.说明
var obj=[{Description:“c”},{Description:“a”},{Description:“1”},{Description:“b”},{Description:“2”},{Description:“11”}];
变量sortArray=(对象排序)((a,b)=>{
设res=0
如果(!isNaN(a.说明)){
返回(+a.说明)-(b.说明);
}否则{
如果(a.说明>b.说明){
res=1;
}否则如果(a.说明 控制台日志(Sortaray)代码>我能够用此代码解决问题:
.sort(function(a,b){
if(isNaN(+a.Description!) && !isNaN(+b.Description!))
{
return -1;
}
else if(!isNaN(+a.Description!) && isNaN(+b.Description!))
{
return 1;
}
else if(!isNaN(+a.Description!) && !isNaN(+b.Description!))
{
return parseFloat(a.Description!)>parseFloat(b.Description!) ? 1 : parseFloat(a.Description!) == parseFloat(b.Description!) ? 0 : -1 ;
}
else
{
return a.Description!>b.Description! ? 1 : a.Description! == b.Description! ? 0 : -1 ;
}
我能够用以下代码解决问题:
.sort(function(a,b){
if(isNaN(+a.Description!) && !isNaN(+b.Description!))
{
return -1;
}
else if(!isNaN(+a.Description!) && isNaN(+b.Description!))
{
return 1;
}
else if(!isNaN(+a.Description!) && !isNaN(+b.Description!))
{
return parseFloat(a.Description!)>parseFloat(b.Description!) ? 1 : parseFloat(a.Description!) == parseFloat(b.Description!) ? 0 : -1 ;
}
else
{
return a.Description!>b.Description! ? 1 : a.Description! == b.Description! ? 0 : -1 ;
}
谢谢你的回答,尼娜。如何在typescript中使用此选项?我发现类型“boolean”不可分配给类型“number error”,因为它需要1,0或-1。请在上面尝试使用一元加号进行第一次比较。感谢Nina的回答。如何在typescript中使用此选项?我得到的类型“boolean”不可分配给类型“number error”,因为它需要1,0或-1。请在上面使用一元加号进行第一次比较。