为什么javascript的排序功能仅支持0-9号码?

时间:2015-07-04 03:19:01

标签: javascript arrays sorting

我是javascript的新手。我知道它是一种弱类型语言,sort函数可以对所有类型的对象进行排序。

但是当它对像

这样的数组进行排序时
> var a = [1, 43, 2, 09, 23]
< undefined
> a.sort()
< [1, 2, 23, 43, 9]

仅限第一个号码?这个设计的禅是什么?

所以,如果我想排序一个只包含数字(大于9)的纯列表,我必须编写一个回调函数来实现这个目的吗?

3 个答案:

答案 0 :(得分:1)

试试这个

a.sort(function(a,b){return a-b;})

答案 1 :(得分:1)

答案 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)。