详解数组Array.sort()排序的方法


Posted in Javascript onMay 09, 2020

数组sort排序

sort比较次数,sort用法,sort常用

描述

方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本。如果调用方法sort()时没有使用参数,将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如果有必要的话),以便进行比较。

如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b,其返回值如下:

如果根据你的评判标准,a小于b,在排序后的数组中a应该出现在b之前,就返回一个小于0的值。

如果a等于b,就返回0。

如果a大于b,就返回一个大于0的值。

注意,数组中undefined的元素都排列在数组末尾。即使你提供了自定义的排序函数也是这样,因为undefined值不会被传递给你提供的orderfunc。

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

1、对数字数组进行由小到大的顺序进行排序。

代码:

var arr = [22,12,3,43,56,47,4];
arr.sort();
console.log(arr); // [12, 22, 3, 4, 43, 47, 56]
arr.sort(function (m, n) {
 if (m < n) return -1
 else if (m > n) return 1
 else return 0
});
console.log(arr); // [3, 4, 12, 22, 43, 47, 56]

2、对字符串数组执行不区分大小写的字母表排序。

代码:

var arr = ['abc', 'Def', 'BoC', 'FED'];
console.log(arr.sort()); // ["BoC", "Def", "FED", "abc"]
console.log(arr.sort(function(s, t){
 var a = s.toLowerCase();
 var b = t.toLowerCase();
 if (a < b) return -1;
 if (a > b) return 1;
 return 0;
})); // ["abc", "BoC", "Def", "FED"]

3、对包含对象的数组排序,要求根据对象中的年龄进行由大到小的顺序排列

代码:

var arr = [{'name': '张三', age: 26},{'name': '李四', age: 12},{'name': '王五', age: 37},{'name': '赵六', age: 4}];
var objectArraySort = function (keyName) {
 return function (objectN, objectM) {
 var valueN = objectN[keyName]
 var valueM = objectM[keyName]
 if (valueN < valueM) return 1
 else if (valueN > valueM) return -1
 else return 0
 }
}
arr.sort(objectArraySort('age'))
console.log(arr) // [{'name': '王五', age: 37},{'name': '张三', age: 26},{'name': '李四', age: 12},{'name': '赵六', age: 4}]

以上所述是小编给大家介绍的JavaScript中数组Array.sort()排序方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Add a Picture to a Microsoft Word Document
Jun 15 Javascript
不使用jquery实现js打字效果示例分享
Jan 19 Javascript
javascript中动态函数用法实例分析
May 14 Javascript
jQuery实现对象转为url参数的方法
Jan 11 Javascript
PHP实现记录代码运行时间封装类实例教程
May 08 Javascript
AngularJS自定义指令实现面包屑功能完整实例
May 17 Javascript
vue+elementUI实现表格关键字筛选高亮
Oct 26 Javascript
ES6 Proxy实现Vue的变化检测问题
Jun 11 Javascript
create-react-app中添加less支持的实现
Nov 15 Javascript
JS函数进阶之继承用法实例分析
Jan 15 Javascript
深入了解Vue3模板编译原理
Nov 19 Vue.js
js判断两个数组相等的5种方法
May 06 Javascript
JavaScript中数组Array.sort()排序方法详解
Mar 01 #Javascript
javascript中replace使用方法总结
Mar 01 #Javascript
jQuery validate 验证radio实例
Mar 01 #Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 #Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
Mar 01 #Javascript
分分钟玩转Vue.js组件(二)
Mar 01 #Javascript
js实现带三角符的手风琴效果
Mar 01 #Javascript
You might like
德生1994机评
2021/03/02 无线电
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
jquery点击展示与隐藏更多内容
2016/12/03 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
详解Python编程中基本的数学计算使用
2016/02/04 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Python 修改列表中的元素方法
2018/06/26 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
python序列化与数据持久化实例详解
2019/12/20 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
英国现代绅士品牌:Hackett
2017/12/17 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
六查六看剖析材料
2014/02/15 职场文书
公司请假条格式
2014/04/11 职场文书
模特大赛策划方案
2014/05/28 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
教师自我剖析材料
2014/09/29 职场文书
买房子个人收入证明
2014/10/12 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python