我正在尝试对数字数组使用JavaScript排序函数,有时它不会做任何事情:
var a = [200,20].sort(); // [20,200]
var b = [200,21].sort(); // [200,21]
答案 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湾出于这个原因,差异足以提供排序(假设你没有使用大数字)