千家信息网

es6中数组怎么排序

发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要讲解了"es6中数组怎么排序",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"es6中数组怎么排序"吧!es6数组的排序方法是"sort()"
千家信息网最后更新 2025年11月06日es6中数组怎么排序

这篇文章主要讲解了"es6中数组怎么排序",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"es6中数组怎么排序"吧!

es6数组的排序方法是"sort()"。sort()方法用于对数组的元素进行排序,排序顺序可以是字母或数字,并按升序或降序,默认按字母升序;该方法有一个可选参数,此参数必须是函数,语法"array.sort(callback(a,b))"。

本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。

sort() 方法用于对数组的元素进行排序。

  • 排序顺序可以是字母或数字,并按升序或降序。

  • 默认排序顺序为按字母升序。

其中,sort()方法有一个可选参数。但是,此参数必须是函数。 数组在调用 sort()方法时,如果没有传参将按字母顺序(字符编码顺序)对数组中的元素进行排序,如果想按照其他标准进行排序,就需要进行传一个参数且为函数,该函数要比较两个值,并且会返回一个用于说明这两个值的相对顺序的数字。

语法:

array.sort(callback(a,b))
参数描述
callback(a,b)

可选。规定排序顺序。必须是函数。

返回值:Array类型,是对数组的引用。请注意,数组在原数组上进行排序,不生成副本。

示例:

 //sort的基本使用  let arr = [8, 1, 4, 3, 7, 9]  let Arr = [21, 55, 29, 105, 45]  console.log(arr.sort()) //[1, 3, 4, 7, 8, 9]  console.log(Arr.sort()) // [105, 21, 29, 45, 55]

由上述代码可知:sort()方法只能对0-9以内的数组进行正确排序,两位数以上的数组项虽然给出了返回值,但却并不是排序后的结果。这是因为sort()是内部做的是根据ASCLL码进行排序的,并不是根据数值大小排序。那这个方法连两位数以上的数字都无法进行正规排序处理,跟咸鱼有什么区别呢?

重点来了:sort()可以接收一个携带两个形参的callback(a,b),即a、b是两个即将要比较大小的元素,且必须要有返回值。

  • 当callback的返回值是正数时、那么 b 会被排列到 a 之前;

  • 当callback的返回值是负数时、那么 a 会被排列到 b 之前;

  • 当callback的返回值是为 0 时、那么 a 与 b 的位置保持不变;

  • sort每执行一次会根据返回值调换两个参数a、b在原数组中的位置;

看完上面的描述你会很蒙圈,你一定会问返回值在哪?参数 a b 的实参是谁?这些当你看懂下面代码之后统统小儿科!

 //sort 内部写法  let Arr = [56, 21, 29, 105, 45]  Arr.sort(function(a, b) { //callback      if (a > b) { // a b 分别是Arr中的 56 21          return 1  //返回正数 ,b排列在a之前      } else {          return -1 //返回负数 ,a排列在b之前      }  })  console.log(Arr) //[21, 29, 45, 55, 105]

执行逻辑:

需要注意的是callback( a , b )接收的两个参数分别是a = > 当前项、b当前项的下一项,若当前项与下一项位置不变时,b为下一项索引-1;判断遍历结束的条件是b参数取不到值 即结束,举例上述代码中第三轮第二次执行时 当前项的索引是3 那么b为下一项,即4 数组中取不到第4项,不满足继续遍历条件,结束遍历!

谈谈返回值:上述代码写的返回值 1 与 -1 只是象征性的代表 1为正数 -1为负数,不论你代码写什么返回值,sort内部只会去判断你的返回值是正数还是负数,哪怕等式成立返回100 不成立返回-10000都是可行的。

解释简写方式:

//简写 最终版    let Arr = [56, 21, 88, 10, 5, 77]  Arr.sort((a, b) => a - b) //箭头函数不加大括号指向这个函数的返回值,可以不写return关键字  console.log(Arr) //[5, 10, 21, 56, 77, 88]

由上图可知,回调函数内部的处理方式是a - b ,而不再是对比两个数。这是因为对比两个数的这一步操作是sort去做的,你只需要规定返回值即可,恰好数学定义大数 - 小数 = 正数 、小数 - 大数 = 负数

举例 56 - 21 = 35 为正数、则返回值为正数,正数代表改变位置;

21 - 88 = 35 为负数、则返回值为负数,负数代表改变位置;

如果数学中大数 - 小数 ≠ 正数 、小数 - 大数 ≠ 负数,就不能这么简写。所以要明确的是sort内部做的是互相对比 而不是互减;

感谢各位的阅读,以上就是"es6中数组怎么排序"的内容了,经过本文的学习后,相信大家对es6中数组怎么排序这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

排序 数组 参数 正数 负数 两个 函数 方法 顺序 代码 位置 字母 元素 前项 升序 大数 小数 数字 代表 简写 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 美国保护网络安全吗 高新金财数据库的用户名 四川正规软件开发应用 icloud服务器地址 请添加到小程序服务器域名中 石家庄一站式服务器 图片批量上传加入数据库 车务段网络安全 练习跑酷的服务器我的世界基岩版 本地域名服务器在本机 微梦想网络技术怎么样 数据库编程工作做什么 搭建下载服务器支持磁力 英语网络技术好考吗 皮城警备服务器在哪 数据库名表名字段名是什么 网络安全管理机构范本 深圳软件开发合法吗 数据库表信息怎么实现级联删除 全门户网络技术服务协议 我的世界基岩版高效羊毛机服务器 查询sql数据库版本信息 数据库编程工作做什么 设置id连接服务器出错 人工智能与网络安全专业的联系 陕西戴尔服务器虚拟化解决方案 学校网络安全工作会议记录 国三网络技术最后一大题 甘肃大数据软件开发公司 在一个学生数据库中
0