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

时间:2014-02-24 13:48:24

标签: javascript arrays sorting

我正在尝试对数字数组使用JavaScript排序函数,有时它不会做任何事情:

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

jsfiddle

2 个答案:

答案 0 :(得分:5)

默认情况下,Javascript将所有内容排序为字符串(=字母顺序)。字符串"200"小于字符串"21"。要按数字排序,你必须这样说:

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

答案 1 :(得分:0)

是的,这是“排序”的标准行为,因为它执行“字符串”重新排序。如果要按数字值排序,则必须通过“比较”功能进行排序,如下所示:

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

对于相同的值,函数必须返回0,n <如果a&lt; 0 b和n>如果a> 0,则为0湾出于这个原因,差异足以提供排序(假设你没有使用大数字)