JavaScript Array.sort不适用于某些数字数组

JavaScript Array.sort doesn't work on some arrays of numbers

本问题已经有最佳答案,请猛点这里访问。

我尝试在数字数组上使用javascript的排序函数,有时它什么都不做:

1
2
var a = [200,20].sort(); // [20,200]
var b = [200,21].sort(); // [200,21]

J小提琴


JavaScript的:一切的字符串(默认为alphabetically)。字符串是小于"21""200"字符串。对排序的数:它只是告诉你

1
[200,21].sort(function(a,b) { return  a-b })


是的,这是标准的行为,因为它是"排序"的"字符串"的顺序进行。如果你想,你必须通过数值排序,通过"比较"功能来排序,像这样:

1
2
3
4
[200,21].sort(function (a, b) {
  return a-b;
})
// [21, 200]

该函数必须返回相同的值是0,0<n<(IF>n>0。如果那是足够的理由,提供差分排序(assuming那你不利用大数)