JS中的数字排序问题?


var myArray = [1,5,3,2,14,55,101,19,500];  
  function sequence(a, b) {    
   return a - b;
  }  
  console.log(myArray.sort(sequence));
  //alert(arr.sort(sequence()));

第一个是alert;

第二个是 console.log。

为什么会出现这种情况,alert怎么解决呢?

//img4.sycdn.imooc.com/59e2fd6b000107d302570064.jpg

//img2.sycdn.imooc.com/59e2fd6b00010b5e03000205.jpg

YanIsPower
浏览 1935回答 3
3回答

cxxyjsj

数组arr中方的是字符串数字吧? 字符串比较是通过ascii码从左往右比较的,所以先排1开头,然后是2开头等。。。

cnyballk

sort方法本身无论是数字还是字符串都是使用toString转化成字符串后以ascii码进行比较,你这里是因为你alert的sort(sequence())里面的函数传入后执行了,所以和sort()无分别,只有这样写sort(sequence)这样才对,参数是用来确定元素顺序的函数的名称。
打开App,查看更多内容
随时随地看视频慕课网APP