javascript数组字段排序,sort()方法排序错乱问题

最近在一个项目里,要对一个数组进行比较多的处理,最后在根据一个字段进行排序。但是很快神奇的问题就出现了,因为字段的值是整数和浮点数混合,直接就发现排序出来的结果变得很奇怪,具体怎么个奇怪法,可以看下图自己品一下。
为了实现效果,我的数组是先排序完再反转过来,所以不用太纠结左右位置。
Lark20200618103656.png

一般来说,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/
vue 简单实现左右翻页功能
« 上一篇 06-18
杰奇3.0绿色手机端模板,轻阅手机端高版本兼容版
下一篇 » 06-22

发表评论

作者信息

热门文章

标签TAG

热评文章