原创作品,转载需得到原作者书面许可,同时保留原作者和出处,否则将追究法律责任。
此方法实现对数组元素的排序功能。
注:此方法是对原数组的操作,并没有生成新的数组。
更多关于数组内容可以参阅JavaScript Array 数组一章节。
语法结构:
[JavaScript] 纯文本查看 复制代码array.sort(sortby)
参数解析:
sortby:可选,规定排序规则的一个函数。
浏览器兼容:
(1).IE浏览器支持此方法。
(2).edge浏览器支持此方法。
(3).谷歌浏览器支持此方法。
(4).火狐浏览器支持此方法。
(5).opera浏览器支持此方法。
(6).safria浏览器支持此方法。
代码实例:
[JavaScript] 纯文本查看 复制代码运行代码var arr=new Array(1,2,3,4,5,6,7,8,9,10); console.log(arr.sort());
以上代码实现了排序功能,貌似是由小到大排序,但是并非如此。
弹出的结果是:
[HTML] 纯文本查看 复制代码1,10,2,3,4,5,6,7,8,9
实际上排序比较的并非是数值的大小,此函数的比较原则如下:
如果此方法没有参数,那就会将数组中的元素尝试转换成字符串,然后比较字符串中每个字符的ASCII码的大小,较小的的字符串在前面。
特别说明:字符串比较ASCII码的方式是首先比较首字符的ASCII码,如果能够区分出大小则停止比较,如果相等则继续比较下一个字符,依次类推。
[JavaScript] 纯文本查看 复制代码运行代码var a=["a","b","c","d"]; a.sort(); console.log(a);
输出结果:a,b,c,d 。
a、b、c、d的ASCII码值分别是:97、98、99、100。
[JavaScript] 纯文本查看 复制代码运行代码var a=["a","B","c","d"]; a.sort(); console.log(a);
输出结果:B,a,c,d 。
大写字母B的的ASCII码值是65,所以它排在第一位。
[JavaScript] 纯文本查看 复制代码运行代码var a=["abc","abd","c","d"]; a.sort(); console.log(a);
输出结果:abc,abd,c,d 。
当第一个字母的ASCII无法比较出结果时,再比较第二个ASCII码的大小。
函数带有参数的时候:
sort()函数可以有一个参数,但是此参数必须是一个函数,并且此参数是可选的。
此参数可以规定排序规则,下面就简单介绍一下带有参数情况下,此函数的用法:
作为参数函数一般会有两个参数,用于传递数组中的元素,并用于排序规则操作,如果返回值大于零,则两个值互换,否则不互换。
[JavaScript] 纯文本查看 复制代码运行代码function compare(a,b){ if(a<b){ return 1; } } var myArra=new Array(10,2,3,4,5,6,7,8,9,1); console.log(myArra.sort(compare));
输出结果:10,9,8,7,6,5,4,3,2,1。
其实参数函数的两个参数不是必须的,看以下代码实例:
[JavaScript] 纯文本查看 复制代码运行代码function compare(){ return 0.5-Math.random(); } var arr=[0,1,2,3,4,5,6,7,8,9]; arr.sort(compare) console.log(arr);
以上代码可以随机打乱数组元素原有元素的顺序。
但是参数函数并没有参数,实际上并不影响数组元素的比较。
前端教程
HTML5 API
鲁ICP备10022556号-3
鲁公网安备 37021302000666号
关于我们
|手机版|小黑屋|
Copyright © 2012-2020 Design: 蚂蚁部落
最新评论