我是javascript的新手。我知道它是一种弱类型语言,sort函数可以对所有类型的对象进行排序。
但是当它对像
这样的数组进行排序时> var a = [1, 43, 2, 09, 23]
< undefined
> a.sort()
< [1, 2, 23, 43, 9]
仅限第一个号码?这个设计的禅是什么?
所以,如果我想排序一个只包含数字(大于9)的纯列表,我必须编写一个回调函数来实现这个目的吗?
答案 0 :(得分:1)
试试这个
a.sort(function(a,b){return a-b;})
答案 1 :(得分:1)
如果未指定回调,则数组按字典顺序排序:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
答案 2 :(得分:1)
默认排序方法将数组元素视为字符串,无论其类型如何:
sort()方法对数组中的元素进行排序并返回数组。排序不一定稳定。默认排序顺序是根据字符串Unicode代码点。 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
根据官方ECMAScript规范,这实际上是实现定义的(http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.11)。