为什么这个if -- else 语句 会排序失败?作用不是和return b-a;一样的吗?

来源:7-22 数组排序sort()

imoocaccount

2017-11-27 18:19

代码如图,结果如下:80,6,50,16,100,1

写回答 关注

5回答

  • 疯_少
    2017-11-27 21:23:21
    已采纳

    这个是W3C的定义,并不是自己写代码,而且你的代码也不对。

    imooca...

    思路没问题,问题出在数组是字符串数组上

    2017-11-29 19:51:01

    共 1 条回复 >

  • 魂千泷
    2017-12-14 09:30:07

     if(a<b) 
               return 1; 
            if(a>b) 
               return -1; 
            return 0;

    此处错误,return 0;上也要加if判断条件,

    imooca...

    谢谢回复,不过代码上没有任何错误,问题出在:我使用的数组是字符串数组(var myarr = new Array("80","16","50","6","100","1");),因此比较时候,会按照字符串的方式来比较

    2018-01-07 15:36:09

    共 1 条回复 >

  • 吏仁
    2017-11-29 14:30:53

    你这个思路没问题,主要是你的数组里面是字符串,不是number类型,所以比较失败。如果是a-b会转换数据类型,所以可以排序成功

    淡水狗 回复imooca...

    怎么转换成数字类型

    2018-03-24 18:58:15

    共 2 条回复 >

  • 吏仁
    2017-11-29 14:25:02

    应该用if...else if....else

    疯_少

    你即使是用if...else if....else也是执行不出来的

    2017-11-29 19:53:46

    共 2 条回复 >

  • imoocaccount
    2017-11-28 21:00:46

    我是想问function函数,函数是自己定义的,和w3c没有任何关系啊????

       function sortNum(a,b) {
            if(a<b)
               return 1;
            if(a>b)
               return -1;
            return 0;
       }

    以及

       function sortNum(a,b) {
         return b-a;
       }

    这两个函数作用我不明白到底哪里不一样???,求解释,详解,谢谢???

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468195 学习 · 21891 问题

查看课程

相似问题