当前位置: 首页 > news >正文

JavaScript中sort()函数

sort()函数是javascript中自带函数,这个函数的功能是排序。

使用sort()函数时,函数参数如果不设置的话,以默认方式进行排序,就是以字母顺序进行排序,准确的讲就是按照字符编码的顺序进行排序。

var arr = [3,2,3,34,12,23,234,84,9];
arr.sort();// 结果: 12,2,23,234,3,3,34,84,9

通过sort(sortby)函数自定义排序的逻辑。

// 升序
var arr = [3,2,3,34,12,23,234,84,9];
arr.sort(function (a, b) {return a - b;
});
// 结果:2,3,3,9,12,23,34,84,234// 降序
var arr = [3,2,3,34,12,23,234,84,9];
arr.sort(function (a, b) {return b - a;
});
// 结果:234,84,34,23,12,9,3,3,2

上述代码中,用一个匿名函数作为sort()的参数。

在匿名函数中,a和b这两个参数我个人理解就是待排序数组中任意两个连续的元素。

如果:

  • a - b < 0: 代表后一个比前一个大,就是升序
  • b - a < 0: 代表前一个比后一个大,就是降序
  • a - b = 0 或 b - a = 0: 前后两个数相等

对于一个普通的数组排序,可以很容易的解决。但在开发中,这样的普通数组很少用。

在做前端开发时,往往要配合后端的开发,而前后台的交互现在大都是用json格式的数据,比如这样的数据:

{"user":[{ "name": "has", "age": 17, "height": 165 },{ "name": "saf", "age": 20, "height": 172 },{ "name": "gngh", "age": 45, "height": 182 },{ "name": "yjerw", "age": 42, "height": 156 },{ "name": "cvb", "age": 22, "height": 176 },{ "name": "wetty", "age": 32, "height": 178 },{ "name": "aDNY", "age": 34, "height": 175 }]
}

关对象数组的排序,sort()函数同样适用。

对"age"排序:

// 按age升序排列
var arr = {"user":[{ "name": "has",   "age": 17, "height": 165 },{ "name": "saf",   "age": 20, "height": 172 },{ "name": "gngh",  "age": 45, "height": 182 },{ "name": "yjerw", "age": 42, "height": 156 },{ "name": "cvb",   "age": 22, "height": 176 },{ "name": "wetty", "age": 32, "height": 178 },{ "name": "aDNY",  "age": 34, "height": 175 }]
};
var users = arr.user;
users.sort(function (a, b) {return a.age - b.age;
});
// 结果(升序):
/*
name:has age:17 height:165
name:saf age:20 height:172
name:cvb age:22 height:176
name:wetty age:32 height:178
name:aDNY age:34 height:175
name:yjerw age:42 height:156
name:gngh age:45 height:182
*/

如果对name排序呢?

// 按name排列
var arr = {"user":[{ "name": "has",   "age": 17, "height": 165 },{ "name": "saf",   "age": 20, "height": 172 },{ "name": "gngh",  "age": 45, "height": 182 },{ "name": "yjerw", "age": 42, "height": 156 },{ "name": "cvb",   "age": 22, "height": 176 },{ "name": "wetty", "age": 32, "height": 178 },{ "name": "aDNY",  "age": 34, "height": 175 }]
};
var users = arr.user;
users.sort(function (a, b) {return a.name - b.name;
});
// 结果:
/*
name:aDNY age:34 height:175
name:cvb age:22 height:176
name:gngh age:45 height:182
name:has age:17 height:165
name:saf age:20 height:172
name:wetty age:32 height:178
name:yjerw age:42 height:156
*/

可以看到这样的字符串排序就是按照字符的ASCII码来比较。

sort()函数功能完全取决于sort()函数中的匿名函数。

http://www.lryc.cn/news/62795.html

相关文章:

  • 泰克Tektronix DPO5204B混合信号示波器
  • 突破传统监测模式:业务状态监控HM的新思路
  • 0Ω电阻在PCB板中的5大常见作用
  • 分布式消息队列Kafka(三)- 服务节点Broker
  • 蠕动泵说明书_RDB
  • 浅谈react如何自定义hooks
  • 如何优雅的写个try catch的方式!
  • 海尔智家:智慧场景掌握「主动」权,用户体验才有话语权
  • 基于铜锁,在前端对登录密码进行加密,实现隐私数据保密性
  • LVS的小总结
  • Spring依赖注入(DI配置)
  • 绘声绘影2023简体中文版新功能介绍
  • 一个好的前端开发人员必须掌握的前端代码整洁与开发技巧
  • 【别再困扰于LeetCode接雨水问题了 | 从暴力法=>动态规划=>单调栈】
  • 酒厂酒业IP网络广播系统建设方案-基于局域网的新一代交互智慧酒厂酒业IP广播设计指南
  • OpenHarmony JS Demo开发讲解
  • CentOS系统安装Intel E810 25G网卡驱动
  • Java经典的String面试题
  • c# 结构体与类区别
  • 使用 patch 命令打补丁
  • C++——类和对象[上]
  • MySQL日志
  • TinyURL 的加密与解密、猜数字游戏、 Fizz Buzz、相对名次----2023/4/28
  • Spring boot结合SkyWalking-Trace工具类实现日志打印请求链路traceid
  • 精通ES=ElasticSearch
  • RabbitMQ-扇形交换机(Fanout )
  • Python 学习曲线 从 Python 新手到 Pro
  • 薪资18K需要什么水平?来看看98年测试工程师的面试全过程…
  • 基于趋动云的 Stable Diffusion Webui 环境搭建
  • 备忘录设计模式解读