JavaScript数组sort()用法
数组sort()用法
JavaScript数组的
sort()
方法用于对数组元素进行排序,默认按照字符串的Unicode编码进行排序。
语法:arr.sort([compareFunction])
compareFunction
这个参数是可填可不填的。compareFunction
是一个函数,用来指定按某种顺序进行排列的函数。- 如果省略,元素按照转换为的字符串的各个字符的
Unicode
位点进行排序。 - 该排序方法会改变原始数组。
默认排序
let arr1 = [40,5,2,3,1,6]
let arr2 = ['40','5','2','3','1','6']
arr1.sort();
arr2.sort();
console.log(arr1,arr2)//[ 1, 2, 3, 40, 5, 6 ] [ '1', '2', '3', '40', '5', '6' ]
升序
原理:sort()里面的函数返回值如果大于0,则a、b交换位置;(数组原本位置为a在b的前面) 如果返回值小于0,则a、b不交换位置; 如果返回值等于0,则a、b的位置不变。
let arr = [40,5,2,3,1,6];
arr.sort((a,b)=>{
if(a > b) {
return 1
}else if(a < b) {
return -1
}else if(a == b){
return 0
}
});
console.log(arr) // [1,2,3,5,6,40]
//简写
arr.sort((a,b)=>a-b);
降序
原理和升序同理
let arr = [40,5,2,3,1,6];
arr.sort((a,b)=>{
if(a < b) {
return 1
}else if(a > b) {
return -1
}else if(a == b){
return 0
}
});
console.log(arr) // [ 40, 6, 5, 3, 2, 1 ]
//简写
arr.sort((a,b)=>b-a);
将数组的奇数和偶数分离
let arr = [2,3,1,2,5,1,2]
arr.sort((a,b) => {
if(a % 2 == 1) return -1
})
console.log(arr);//[1, 5, 1, 3, 2, 2, 2]
打乱数组
let arr = [1,2,3,4,5,6,7]
arr.sort(function(a,b){
return Math.random()-0.5;//Math.random()方法在(0,1)开区间随机取值
})
console.log(arr);//[2, 1, 3, 7, 5, 4, 6]
sort源码原理
在v8源码sort部分中,对于需要排序的元素个数n,具体排序策略有几下中情形:
- 当 n<=10 时,采用插入排序;
- 当 n>10 时,采用三路快速排序;
- 10< n <=1000,采用中位数作为哨兵元素;
- n>1000,每隔 200~215 个元素挑出一个元素,放到一个新数组中,然后对它排序,找到中间位置的数,以此作为中位数。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhcbij
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13