Javascript 中 Array的 sort()和 compare()方法
2012-08-02 00:07
393 查看
Javascript 中 Array的 sort()方法其实是把要排序的内容转化为string(调用 toString()), 然后按照字符串的第一位 ascii 码先后顺序进行比较,不是数字。
我们看看官方是怎么说的:
必选项。任意 Array 对象。
sortFunction
可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。
如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:
负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。
结果: 1,25,3
那么怎么办呢?我们可以写一个 compare() 方法
结果: 1,3,25
我们可以把上面代码改写成匿名类的方式:
结果一样: 1,3, 25
我们看看官方是怎么说的:
arrayobj.sort(sortfunction)
参数
arrayObj必选项。任意 Array 对象。
sortFunction
可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。
说明
sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:
负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。
<html> <head> <script type="text/javascript"> var arr = [1,3, 25]; arr.sort(); alert(arr); </script> </head> <body> </body> </html>
结果: 1,25,3
那么怎么办呢?我们可以写一个 compare() 方法
<html> <head> <script type="text/javascript"> var arr = [ 1, 3, 25 ]; arr.sort(compare); //函数名是对象的引用,所以只写名字就行。 alert(arr); function compare(num1, num2) { var temp1 = parseInt(num1); var temp2 = parseInt(num2); if (temp1 < temp2) { return -1; } else if (temp1 == temp2) { return 0; } else { return 1; } } </script> </head> <body> </body> </html>
结果: 1,3,25
我们可以把上面代码改写成匿名类的方式:
<html> <head> <script type="text/javascript"> var arr = [ 1, 3, 25 ]; arr.sort(function (num1, num2) { var temp1 = parseInt(num1); var temp2 = parseInt(num2); if (temp1 < temp2) { return -1; } else if (temp1 == temp2) { return 0; } else { return 1; } } ) alert(arr); </script> </head> <body> </body> </html>
结果一样: 1,3, 25
相关文章推荐
- Javascript 中 Array的 sort()和 compare()方法
- Javascript数组(array) sort方法的解释和分析
- Javascript数组(array) sort方法的解释和分析
- 浅谈 JavaScript array.sort(compare()) 实现原理.
- Javascript数组(array) sort方法的解释和分析
- javascript 利用Array的sort方法,对Array进行排序 (Array里面放的是对象而不是字符串)
- javascript数组(array)的常用方法(shift/unshift/pop/push/concat/splice/reverse/sort/slice/join)
- javascript中Array.sort()方法
- [ javascript ] js中array的sort()方法!
- JavaScript中数组Array.sort()排序方法详解
- 浅谈JavaScript--Array数组sort()排序方法与自定义比较器的使用
- javascript 中 Array.sort()方法
- 冇内容管理系统分析-js中关于array的slice和sort方法(转自JavaEye)
- Javascript数组Array方法解读
- Dojo 扩展 javascript 核心库 - 数组方法(Array)
- JavaScript学习之Array(数组对象)方法介绍
- 用C#实现对数组元素排序(Array.Sort)方法
- 【javascript基础】之【javascript1.6 Array 新增方法】
- 关于javaScript Array数组方法的应用