详解数组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 相关文章推荐
Expandable &quot;Detail&quot; Table Rows
Aug 29 Javascript
js中字符替换函数String.replace()使用技巧
Aug 14 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
Jul 09 Javascript
手机平板等移动端适配跳转URL的js代码
Jan 25 Javascript
node.js中的querystring.parse方法使用说明
Dec 10 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
Mar 04 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
May 13 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
Oct 11 Javascript
浅谈node的事件机制
Oct 09 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 jQuery
jQuery实现监听下拉框选中内容发生改变操作示例
Jul 13 jQuery
js前端面试之同步与异步问题详解
Apr 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下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
什么是MVC,好东西啊
2007/05/03 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
基于php在各种web服务器的运行模式详解
2013/06/03 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
js动态获取时间的方法分析
2019/08/02 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
python实现备份目录的方法
2015/08/03 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
中专毕业自我鉴定
2013/10/16 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
2015元旦标语横幅
2014/12/09 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript