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

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

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

正在回答

5 回答

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

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

imoocaccount 提问者

思路没问题,问题出在数组是字符串数组上
2017-11-29 回复 有任何疑惑可以回复我~

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

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

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

imoocaccount 提问者

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

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

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

imoocaccount 提问者

非常感谢,确实是字符串数组的问题,转换成数字类型就可以了
2017-11-29 回复 有任何疑惑可以回复我~
#2

淡水狗 回复 imoocaccount 提问者

怎么转换成数字类型
2018-03-24 回复 有任何疑惑可以回复我~

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

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

imoocaccount 提问者

和if--else 语句无关,是确实是字符数组的问题,多谢了
2017-11-29 回复 有任何疑惑可以回复我~
#2

疯_少

你即使是用if...else if....else也是执行不出来的
2017-11-29 回复 有任何疑惑可以回复我~

我是想问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;
   }

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

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

举报

0/150
提交
取消

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

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