文章导航

JavaScript sort()

2018-9-8 01:03| 作者: admin| 查看: 914| 评论: 0|来自: 蚂蚁部落

此方法实现对数组元素的排序功能。

注:此方法是对原数组的操作,并没有生成新的数组。

更多关于数组内容可以参阅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);

以上代码可以随机打乱数组元素原有元素的顺序。

但是参数函数并没有参数,实际上并不影响数组元素的比较。



鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部