JavaScript 数组排序函数sort()的使用
简介
sort()方法是js中对于数组进行排序的函数。其可以方便快捷的实现对于数组的排序而不用我们自己编写排序方法。注:sort()函数会直接改变原数组。
1.纯字符串数组排序
let myArray = ["people","person","apple","ziv"]
console.log(myArray.sort())
// 打印结果[ 'apple', 'people', 'person', 'ziv' ]
其对于字符串数组直接按照字典顺序进行排序。注意:大小写字母也会影响排序结果,大写字母排在小写字母前面。
2.纯数字数组排序
let myArray = [541,2,34,55,311]
console.log(myArray.sort())
// 打印结果 [ 2, 311, 34, 541, 55 ]
我们明显可以看出其排序结果并没有按照元素数值的大小进行排序,而是根据其每个位置上元素的字符顺序排列。所以sort()函数在不传参的情况下对数字数组也是按照字符顺序排序。
3.混合类型数组排序
let myArray = [1,2,'dwef',3, ,'ffff',undefined,5,NaN,9999999999999999999999]; // NaN的定义为一个数字类型的常量,所以排在字符串前面。
console.log(myArray.sort())
// 打印结果 [ 1, 1e+22, 2, 3, 5, NaN, 'dwef', 'ffff', undefined, <1 empty item> ]
我们看到排序结果有些微妙:
- 数字排列在字母前面
- 9999999999999999999999被转换成科学计数法后排列在数字2的前面
- NaN在js中是一个数值常量,排列在数值类型的最后面
- undefined排列在字符串后面
- 空元素被排列在最后
4.按照自定义方法进行排序。执行非字典顺序的排序
sort()方法可以接收一个函数,这个函数有两个参数,函数的返回值决定了数组的返回结果
函数的返回值有大于0,小于0,等于0三种结果。我们用一个例子来解释一下。
let myArray = [541,2,1,34,55,311];
// 这个数组是第二步我们使用的数组,我们可以看到如果直接用sort()排序,它的结果为[ 2, 311, 34, 541, 55 ]
myArray.sort(function (x,y){console.log(x,y,x-y)return x-y}
);
console.log(myArray)
/*打印结果:
2 541 -539
34 2 32
34 541 -507
34 2 32
55 34 21
55 541 -486
311 55 256
311 541 -230
[ 2, 34, 55, 311, 541 ]
* */
因为不同浏览器对于sort()的内部实现不同,所以我们不对sort()内部实现做过多的解释,大体是分为插入、快速、归并、桶排序几种。
这个匿名函数的返回值决定了数组的排序结果,现在我们传进去了x,y两个参数(有顺序,x在y的前面),如果x>y,则x-y>0,匿名函数返回的是一个正值,则x,y的位置会变换。
如我们传进去了 541,2, 因为541-2 > 0 ,所以541和2的位置会变化,在排序后的数组中,541的索引大于2的索引。所以如果想要实现一个升序的数组,返回值为x-y就可以。
在参数位置(x,y)不发生改变的情况下,想要实现降序,即如果x>y,顺序不变,x<y颠倒顺序,所以在x<y的的时候,我们要让返回值大于0,所以此时返回值为 y-x。
以上例子已经讲解了返回值为什么要为x-y或者y-x。下面就总结一下sort()排序的主要事项:
- sort()函数默认按照字典顺序进行排序。
- sort()函数可以接收一个函数作为参数。
- 这个参数函数的返回值决定了数组的排序。返回值大于0会变换两个参数的位置,返回值小于0不会变换两个参数的位置。
JavaScript 数组排序函数sort()的使用相关推荐
- Js数组排序函数sort()介绍
JavaScript实现多维数组.对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序. sort() 方法用于对数组的元素进行排序.语法如下: arrayObject.sort ...
- 深入探讨JS中的数组排序函数sort()和reverse()
最近在研究Javascript发现了其中一些比较灵异的事情.有点让人感到无语比如: alert(typeof( NaN == NaN));//结果为假. alert(typeof( NaN != Na ...
- Js数组排序函数:sort()
原文链接:https://blog.csdn.net/qq_37936542/article/details/78979521 js原生的 sort() 排序函数使用起来很方便 语法:arrayObj ...
- PHP 数组排序函数sort,rsort,ksort,krsort,asort,arsort区别
一.概念: 1.自然排序法:即按自然数的大小排序,例如"10>2"; 2.计算机标准排序法:是以逐个字符比较,排序,例如"2>10" ...
- php的数组排列函数,常用PHP数组排序函数归纳
数组排序:数组中的元素能够以字母或数字顺序进行升序或降序排序. 常用的PHP数组排序函数 •sort() - 以升序对数组排序 •rsort() - 以降序对数组排序 •asort() - 根据值,以 ...
- JavaScript 数组排序及查找数组中最大值最小值方法
JavaScript 数组排序方法及查找最大值最小值方法 1. sort()方法排序 1.1 方法介绍 1.2 语法:arr.sort([compareFunction]) 1.3 参数说明 1.4 ...
- Javascript Array对象 sort()方法,记忆方法,方法扩展
相信 有很多 同仁们,尤其是初学者,在记住 Array对象 sort() 方法的排序,规则上,有点困难: 其实sort()方法已经在实际工作中用到很多遍了,可当我仔细推敲,这个sort()方法,什么时 ...
- JavaScript 数组排序,随机排序,查找最大(最小)值,对象属性进行排序
JavaScript 数组排序 1.数组排序- - -sort() 根据首字符进行排序,a-z.注意:会改变原数组 var array=["c","d",&qu ...
- 实习期间总结遇到的Javascript常用函数
Javascript常用函数 Array函数 forEach() 遍历数组 数组:arr arr.forEach(回调函数,this) (this可选) 遍历数组,执行回调函数 push( ...
最新文章
- 【vivado】debug hub时钟不匹配
- python爬虫实例-python使用百度进行爬虫简单学习例子
- 域名的购买,备案,解析以及绑定云服务器上的项目
- 【weblogic】部署jfinal编写的应用
- Kerberos认证过程学习理解
- 【linux(1),八年Java开发心路历程
- 企业之haproxy
- C#汉字转拼音的实现方法
- vue 年月日时分秒毫秒
- ZOJ ACM忽悠训练
- 关于java的国内外论坛地址分享
- Python jiba 分词
- 四川跃恒云启网络科技有限公司:拼多多推广花费高怎么调整
- 基于低代码平台开发的督办系统为企业管理赋能
- Java写入txt文件内容
- task04 办公自动化之Python 操作 PDF
- fopen()函数的整理
- Coursera | Andrew Ng (02-week-1-1.7)—理解 Dropout
- MySQL数据库的引擎
- 呵,偶居然也能“说教”了