我实现了下面的逻辑来对混合数据(包含字母数字和数字值)进行排序,但它没有按预期排序。
/*For numeric value sorting */
if (!isNaN(fVal) && !isNaN(lastVal)) {
switch (policy) {
case SORT_BY_DESC:
return +fVal < +lastVal ? 1 : -1;
case SORT_BY_ASC:
return +fVal > +lastVal ? 1 : -1;
default:
return 0;
}
}
/* For alphanumeric sorting */
else {
switch (policy) {
case SORT_BY_DESC:
return fVal < lastVal ? 1 : -1;
case SORT_BY_ASC:
return fVal > lastVal ? 1 : -1;
default:
return 0;
}
}
如果所有的值都是数值,这个逻辑工作正常,但是如果我有混合数据,它就不能正确排序。
- 预期结果-**
数据按降序排列-63372A1021、63372A1019、60091A0222、7776、6789、633
数据按升序排列-633、、6667、6789、7776、60091A0222、63372A1019、63372A1021
"我得到的是--"
降序排列-7776、6789、6667、63372A1021、63372A1019、633、60091A0222
升序排列-60091A0222、633、63372A1019、63372A1021、6667、6789、7776
1条答案
按热度按时间qv7cva1a1#
您可以检查有限性并将此值排序到顶部。