我编写了以下compare函数对对象数组进行排序。首先,所有项目均以“ Ro”开头,并按其长度进一步分组。然后,所有以“ Bo”开头的项目都将按照其角度和其余部分进一步分组。
private mycompareFunction(a: T, b: T) {
if(a.name.startsWith("Ro") && b.name.startsWith("Ro")) {
return a.length - b.length;
} else if(b.name.startsWith("Ro")) {
return 1;
} else if(a.name.startsWith("Bo") && b.name.startsWith("Bo")) {
return a.degrees - b.degrees;
} else if(!a.name.startsWith("Ro") && b.name.startsWith("Bo")) {
return 1;
}
return 0;
}
我得到的结果是:
RoØ80/ 125
BoØ80/ 125,15°
沼泽Ø80/ 125,30°
BoØ80/ 125,45°
BoØ80/ 125,87°
RoØ80/ 125,0.5m
RoØ80/ 125,1,0m
RoØ80/ 125,2,0m
光辉
Schieb XXmm
我在这里做什么错了?
答案 0 :(得分:1)
比较函数应返回
例如,a
以“ Ro”开头而b
不是。
这是我要怎么做:
private mycompareFunction(a: T, b: T) {
if (a.name.startsWith("Ro")) {
if (b.name.startsWith("Ro") {
return a.length - b.length;
} else {
return -1;
}
} else if (a.name.startsWith("Bo") {
if (b.name.startsWith("Ro") {
return 1;
} else if (b.name.startsWith("Bo") {
return a.degrees - b.degrees;
} else {
return -1;
}
} else {
if (b.name.startsWith("Ro") || b.name.startsWith("Bo") {
return 1;
} else {
return 0;
}
}
}