问答详情
源自:7-22 数组排序sort()

如果return a-b 返回的值是0.5

http://img.mukewang.com/581591bd00019f7003520136.jpg如果return a-b 返回的值是0.5 ,比如myarr[0]=16,myarr[1]等于15.5,那么return 0.5小于1 ,为什么还是能够正常的升序排序,不是应该顺序不变吗?


若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。这句话如何理解?

提问者:weibo_e_狼传说_0 2016-10-30 14:28

个回答

  • stone310
    2016-10-31 00:29:13

    这句话放在这里是错误的!

    如果放在这么写:

    var arr=[0.1,0.5,0.3];
    arr.sort(function(a,b){   
        if(a-b>0){
            return 1;
        }else if(a-b<0){
            return -1;
        }else{
            return 0;
        }
    })
    //如果这么写,这句话还能勉强能套进去,因为>0返回1,<0返回-1,相等就返回-1和1之间;

    如果放在这种写法就不能这么说了:

    var arr=[0.1,0.5,0.3];
    arr.sort(function(a,b){
       return a-b;
    })
    就如你说的,返回值就是小数,那还不是照样排序;

    因此这句话不对的,只有返回值为0的时候才是相等的情况

    PS:毕竟良心免费课程,有些疏漏完全可以谅解..

  • 糖醋肉3984350
    2016-10-30 17:20:10

    好像是说文本框中输入的数字被变成字符串,需要把字符串转化为数字,就像var one=parseInt(document.getElementById("txt1").value)。。。看到一位幕友说的


  • 糖醋肉3984350
    2016-10-30 17:06:19

    sortNum(a ,b){

           a=parseInt(a);

           b=parseInt(b);

          return b-a;

    }