详解数组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 相关文章推荐
javascript实现轮显新闻标题链接
Aug 13 Javascript
JS动态获取当前时间,并写到特定的区域
May 03 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
Apr 11 Javascript
JavaScript数据结构和算法之二叉树详解
Feb 11 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
JS字符串的切分用法实例
Feb 22 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
Jan 15 Javascript
前端分页功能的实现以及原理(jQuery)
Jan 22 Javascript
Angular2 路由问题修复详解
Mar 01 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
Jul 02 Javascript
Electron 调用命令行(cmd)
Sep 23 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
Oct 24 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
相对路径转化成绝对路径
2007/04/10 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
php 可变函数使用小结
2018/06/12 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
jquery.validate使用攻略 第二部
2010/07/01 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
Django框架模板的使用方法示例
2019/05/25 Python
python设置环境变量的作用整理
2020/02/17 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
CSS3 简写animation
2012/05/10 HTML / CSS
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
廉洁使者实施方案
2014/03/29 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript
Python编解码问题及文本文件处理方法详解
2021/06/20 Python