为了账号安全,请及时绑定邮箱和手机立即绑定

​sort()接收的比较函数

sort()接收的比较函数

function sortNum(a,b) {

if(a>b){

return 1;

}

else if(a<b){

return -1;

}

else{

return 0;

}

}

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

正在回答

4 回答

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


1 回复 有任何疑惑可以回复我~
#1

风到这里就是粘 提问者

非常感谢!
2017-07-27 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

你数组中的不是数,是字符串。你把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>

1 回复 有任何疑惑可以回复我~
#1

风到这里就是粘 提问者

非常感谢!
2017-07-27 回复 有任何疑惑可以回复我~

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

 return a  

 return b 


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468189    人
  • 解答问题       21891    个

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

进入课程

​sort()接收的比较函数

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信