BeWithYou

胡搞的技术博客

  1. 首页
  2. web前端/Javascript
  3. Js中sort的一个坑

Js中sort的一个坑


Javascript中数组的sort

js里面数组排序用sort方法,可以定义排序函数。

今天用的时候发现一个问题。其实也不算是问题吧,只是以前一直没有发现呢!

var a = [-1,-2,-3,-4,-5];
a.sort();
console.log(a);
//output [-1,-2,-3,-4,-5]

居然没有按增序排列!于是强制定义了一下排序函数才有效。

var a = [-1,-2,-3,-4,-5];
a.sort(function(a,b){return a-b;});
console.log(a);
//output [-5,-4,-3,-2,-1]

原来javascript中的sort默认是按照元素的ascii码增序排序的。所以比如排序负数的时候就会有问题。同理,排序[111,1,2]这样的数组也会有问题。

另外,Js和PHP中自定义排序函数都是a<b则返回-1(负数),a>b则返回1(正数)。跟Cpp的STL里的sort不同,它是return a<b这样的bool返回值。

回到顶部