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

​sort()接收的比较函数

sort()接收的比较函数

function sortNum(a,b) {

if(a>b){

return 1;

}

else if(a<b){

return -1;

}

else{

return 0;

}

}

为什么不行?js高程是看的

提问者:风到这里就是粘 2017-07-26 17:35

个回答

  • qq_又青_04119455
    2017-07-26 18:18:48
    已采纳

    你把数组中的双引号都去掉就可以了,如果不去双引号比较的是ASC||码的大小


  • 丶听风思雨
    2017-09-21 14:32:08

    a,b比较返回的不是boolean值?

  • 信者得救
    2017-07-26 20:09:18

    你数组中的不是数,是字符串。你把sortNum函数换成下面这个就可以了。

    function sortNum(a,b){

    return a - b;//从小到大排列,如果想从大到小排列换成b - a就可以了。

    }

    如果你不想改这个函数,那就需要用另一种办法先把myarr这个数组中的字符串转换成数。

    例如可以这样

    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Array对象 </title>
            <script type="text/javascript">
    /*        function sortNum(a,b) {
                return a - b;
            }*/
            function sortNum(a,b) {
                if(a>b){
                    return 1;
                }
                else if(a<b){
                    return -1;
                }
                else{
                    return 0;
                }
            }
            var myarr = new Array("80","16","50","6","100","1");
            for (var i = 0,len = myarr.length; i < len; i++) {
                myarr[i] = Number(myarr[i]);
            }
            document.write(myarr.sort(sortNum));
            </script>
        </head>
        <body>
        </body>
    </html>

  • 慕运维0494850
    2017-07-26 18:19:47

    a和b比较的,return只能返回a或者b  

     return a  

     return b