设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间23 现在时间23 缓存数据 好好的睡一觉吧,闭上眼睛做个好梦,明天睁眼又会是美好的一天,晚安好梦。

好好的睡一觉吧,闭上眼睛做个好梦,明天睁眼又会是美好的一天,晚安好梦。

查看: 1478|回复: 3

js中.sort()函数的常见用法与高级操作

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:224
  • 打卡月天数:0
  • 打卡总奖励:3517
  • 最近打卡:2025-06-30 06:53:44
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
418
主题
386
精华
0
金钱
4762
积分
854
注册时间
2023-1-8
最后登录
2025-6-30

发表于 2023-6-3 12:45:49 | 显示全部楼层 |阅读模式
这是.sort()函数最常见的用法
  1. //没有函数参数,按字符编码格式排序
  2. var arr = [3,2,3,34,12,23,234,84,9];
  3. arr.sort();

  4. // 结果: 12,2,23,234,3,3,34,84,9
复制代码
  1. // 需要升序或者降序则需要传入一个函数参数
  2. var arr = [3,2,3,34,12,23,234,84,9];
  3. arr.sort(function (a, b) {
  4.     return a - b;
  5. });
  6. // 结果:2,3,3,9,12,23,34,84,234

  7. // 降序
  8. var arr = [3,2,3,34,12,23,234,84,9];
  9. arr.sort(function (a, b) {
  10.     return b - a;
  11. });
复制代码
但或许你还对其为什么要这么操作存有一些疑惑
我们要先搞懂往.sort()里传入的函数的参数a,b是什么
sort()要排序就要遍历数组,以上面的数组为例子
其中遍历第一步的a=3、b=2,
第二步时候a=2、b=3,
第三步的时候a=3,b=34
。。。。。。。
就像你写的冒泡排序一样,每一个元素都会被对比到
如何排序呢?这是w3c对其的解释:
  1. 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。若 a 等于 b,则返回 0。若 a 大于b,则返回一个大于 0 的值。
复制代码
也就是说,在传入的函数里如果你想a排在b前,就return一个小于0的数
如果你想a排在b后,就return一个大于0的数
这样,就能完成对数组元素的排序了。
清楚了原理,那么我们就可以想到一些高级的骚操作了
关于对象数组的排序:
  1. // 按age升序排列
  2. var users =[
  3.         { "name": "has",   "age": 17, "height": 165 },
  4.         { "name": "saf",   "age": 20, "height": 172 },
  5.         { "name": "gngh",  "age": 45, "height": 182 },
  6.         { "name": "yjerw", "age": 42, "height": 156 },
  7.         { "name": "cvb",   "age": 22, "height": 176 },
  8.         { "name": "wetty", "age": 32, "height": 178 },
  9.         { "name": "aDNY",  "age": 34, "height": 175 }
  10.      ]
  11. users.sort(function (a, b) {
  12.     return a.age - b.age;
  13. });
  14. // 结果(升序):
  15. /*
  16. name:has age:17 height:165
  17. name:saf age:20 height:172
  18. name:cvb age:22 height:176
  19. name:wetty age:32 height:178
  20. name:aDNY age:34 height:175
  21. name:yjerw age:42 height:156
  22. name:gngh age:45 height:182
  23. */
复制代码
  1. // 按name排列
  2. var users =[
  3.         { "name": "has",   "age": 17, "height": 165 },
  4.         { "name": "saf",   "age": 20, "height": 172 },
  5.         { "name": "gngh",  "age": 45, "height": 182 },
  6.         { "name": "yjerw", "age": 42, "height": 156 },
  7.         { "name": "cvb",   "age": 22, "height": 176 },
  8.         { "name": "wetty", "age": 32, "height": 178 },
  9.         { "name": "aDNY",  "age": 34, "height": 175 }
  10.      ]
  11. var users.sort(function (a, b) {
  12.     return a.name - b.name;
  13. });
  14. // 结果:
  15. /*
  16. name:aDNY age:34 height:175
  17. name:cvb age:22 height:176
  18. name:gngh age:45 height:182
  19. name:has age:17 height:165
  20. name:saf age:20 height:172
  21. name:wetty age:32 height:178
  22. name:yjerw age:42 height:156
  23. */
复制代码
  1. // 按布尔值排列
  2. var users=[
  3.         { "name": "has",   "age": 17, "height": 165, "state": true},
  4.         { "name": "saf",   "age": 20, "height": 172, "state": false},
  5.         { "name": "gngh",  "age": 45, "height": 182, "state": false },
  6.         { "name": "yjerw", "age": 42, "height": 156, "state": true },
  7.         { "name": "cvb",   "age": 22, "height": 176, "state": false },
  8.         { "name": "wetty", "age": 32, "height": 178, "state": true },
  9.         { "name": "aDNY",  "age": 34, "height": 175, "state": false }
  10.      ]
  11. users.sort(function (a, b) {
  12.     return b.state- a.state;
  13. });
  14. //众所周知,true - false = 1
  15. //结果
  16. /*
  17. [
  18.   { name: 'has', age: 17, height: 165, state: true },
  19.   { name: 'yjerw', age: 42, height: 156, state: true },
  20.   { name: 'wetty', age: 32, height: 178, state: true },
  21.   { name: 'saf', age: 20, height: 172, state: false },
  22.   { name: 'gngh', age: 45, height: 182, state: false },
  23.   { name: 'cvb', age: 22, height: 176, state: false },
  24.   { name: 'aDNY', age: 34, height: 175, state: false }
  25. ]
  26. */
复制代码
总结
到此这篇关于js中.sort()函数的常见用法与高级操作的文章就介绍到这了,更多相关js中.sort()函数用法内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
17
积分
14
注册时间
2022-12-30
最后登录
2022-12-30

发表于 2024-8-11 11:08:08 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
17
积分
14
注册时间
2022-12-24
最后登录
2022-12-24

发表于 2024-10-31 06:50:14 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
18
积分
16
注册时间
2022-12-28
最后登录
2022-12-28

发表于 7 天前 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表