js之坑之不同小数位数的数据比较大小

   一、问题场景

          我在有次项目中,需要取出一组数据的最小值: var data={"105779.02", "156206.38", "183432.39", "3722.41", "42979.47", "45066.82", "72362.10", "93933.99", "94026.86", "98592.64"}。

          一般的想法,就直接想到使用java数组的排序算法, sort()方法,然后我就使用该方法排序后,就取第一个值,代码提交后,发现取到的不是想要的3722.41,因为之前也用过此方法比较一些整数,一顿操作猛如虎,然而不知道哪儿出错了!! 排序后的结果为:


0: "105779.02"
1: "156206.38"
2: "183432.39"
3: "3722.41"
4: "42979.47"
5: "45066.82"
6: "72362.10"
7: "93933.99"
8: "94026.86"
9: "98592.64

二、问题解决

        后来经查资料,发现此处的小数,如果是不同的位数话,会自动先比较相同位数的,相同位数比较完后,再去比较下一批。 将data.sort()  修改为  data.sort(function(a, b){return a - b}); 这样就是升序排序,如果想要是降序的话,那么修改return语句的a-b 为 b-a;

      整理如下:

      升序:   data.sort(function(a, b){return a - b})

      降序:  data.sort(function(a, b){return  b-a })

    重新调试后,发现结果就按照从小到大的顺序排列:
    "3722.41","42979.47", "45066.82", "72362.10", "93933.99",...,"105779.02", "156206.38","183432.39"

发布了53 篇原创文章 · 获赞 45 · 访问量 8837

猜你喜欢

转载自blog.csdn.net/qq_33036061/article/details/104417054