详解数组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 相关文章推荐
JS 容错处理代码, 屏蔽错误信息
Mar 09 Javascript
jquery 问答知识整理
Feb 11 Javascript
JavaScript 判断日期格式是否正确的实现代码
Jul 04 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
Jul 10 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
Javascript从数组中随机取出不同元素的两种方法
Sep 22 Javascript
JS实现的验证身份证及获取地区功能示例
Jan 16 Javascript
jQuery.ajax向后台传递数组问题的解决方法
May 12 jQuery
webpack2.0配置postcss-loader的方法
Aug 17 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
Nov 13 Javascript
vue实现带复选框的树形菜单
May 27 Javascript
Node.js API详解之 Error模块用法实例分析
May 14 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 curl 伪造IP来源的实例代码
2012/11/01 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
php计算年龄精准到年月日
2015/11/17 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
js静态方法与实例方法分析
2011/07/04 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
DOM基础教程之使用DOM控制表格
2015/01/20 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
详解用python实现简单的遗传算法
2018/01/02 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
生产工厂门卫岗位职责
2014/09/26 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
java多态注意项小结
2021/10/16 Java/Android