详解数组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 相关文章推荐
jQuery实现输入框下拉列表树插件特效代码分享
Aug 27 Javascript
JS给swf传参数的实现方法
Sep 13 Javascript
ajax图片上传,图片异步上传,更新实例
Dec 30 Javascript
解决AngualrJS页面刷新导致异常显示问题
Apr 20 Javascript
利用纯js + transition动画实现移动端web轮播图详解
Sep 10 Javascript
十分钟带你快速了解React16新特性
Nov 10 Javascript
微信小程序template模版的使用方法
Apr 13 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
Aug 09 Javascript
微信小程序模板消息推送的两种实现方式
Aug 27 Javascript
d3.js 地铁轨道交通项目实战
Nov 27 Javascript
vue 动态表单开发方法案例详解
Dec 02 Javascript
微信小程序文章列表功能完整实例
Jun 03 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
php miniBB中文乱码问题解决方法
2008/11/25 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
js中开关变量使用实例
2017/02/24 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
node跨域请求方法小结
2017/08/25 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
浅谈Ant Design Pro 菜单自定义 icon
2020/11/17 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
ES6学习教程之Promise用法详解
2020/11/22 Javascript
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
python中scikit-learn机器代码实例
2018/08/05 Python
python实现键盘控制鼠标移动
2020/11/27 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
python实现控制台输出彩色字体
2020/04/05 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
PyTorch-GPU加速实例
2020/06/23 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
德国网上药房:Apotal
2017/04/04 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
房地产出纳岗位职责
2013/12/01 职场文书
好人好事事迹材料
2014/02/12 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
感恩节寄语2015
2015/03/24 职场文书
正规欠条模板
2015/07/03 职场文书
商业计划书范文
2019/04/24 职场文书
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android