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

麻烦详细解释:sort()方法中传一个比较函数其中到底是怎么比较的?

麻烦详细解释:sort()方法中传一个比较函数其中到底是怎么比较的?

Ewall_ 2016-12-27 20:01:04
function compare(value1,value2){      if(value1<value2){      return -1;      }else if(value1>value2){      return 1;      }else{      return 0;      }     }           var test=[0,1,4,5,15,6,4];     var result=test.sort(compare);     console.log(result);
查看完整描述

1 回答

?
IvanAstrochicha

TA贡献2条经验 获得超1个赞

sort()其实是冒泡排序的,把数组的内容转变为字符,相邻数组元素两两按照ASCII码进行比较,第一次比较ASCII最大的数组元素最在数组末端,第二次第二大的数组元素排在array.length-2位置,依此类推进行排序。

但是,你上面的例子,输出的结果并不是想象中的,因为转变为字符排序,并不是数字排序,可以在compare方法中对value1和value2进行parseInt()转变即可。

查看完整回答
1 反对 回复 2016-12-28
  • Ewall_
    Ewall_
    如果现在我把数组里0和1取出来比较,return返回的是-1,这时候两个数组元素是怎么排的?
  • IvanAstrochicha
    IvanAstrochicha
    你说的这种情况数组元素位置不变。如果value1 > value2,就调换位置 。
  • 1 回答
  • 1 关注
  • 1440 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信