最近在一个项目里,要对一个数组进行比较多的处理,最后在根据一个字段进行排序。但是很快神奇的问题就出现了,因为字段的值是整数和浮点数混合,直接就发现排序出来的结果变得很奇怪,具体怎么个奇怪法,可以看下图自己品一下。
为了实现效果,我的数组是先排序完再反转过来,所以不用太纠结左右位置。
一般来说,js提供的数组排序方法是sort(),具体用法如下:
arr.sort();
然后我的数组是如下的形式:
var arr = [
[1.2588,1020.1],
[0.558,1018],
[0.98745,1221.3],
[11,1158.6],
[0.669,1143.2],
[2.3658,1022],
[4.5895,1025.8],
]
我要根据数组里面的小数组的第一个字段来进行排序,按道理来讲,它会根据数组的字段大小一路排列下去,但是实际上因为整数和浮点数同时存在,排序变得有几丝混乱。多次验证之后,我明白了一件事,我好像摸到了js的一个坑,又或者是这个sort()方法根本就无法这么便捷的使用了。
解决方法如下,定义一个新的方法处理数组。
function sortNumber(list){
function sortNumbersub(a,b){
return Number(b[0])-Number(a[0]);
}
list.sort(sortNumbersub)
return list;
}
然后数组排序则为以下的形式
arr = sortNumber(arr);
本质同样还是使用sort方法,只不过在里面加了一个数据对比的方法,从而得出正确的排序。
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/2014/