详解数组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 个人笔记(没有整理,很乱)
Jul 07 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
Apr 15 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
Feb 07 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
Aug 04 Javascript
node.js中的emitter.emit方法使用说明
Dec 10 Javascript
轻松搞定jQuery.noConflict()
Feb 15 Javascript
JS实现的简易拖放效果示例
Dec 29 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
Jun 11 Javascript
前端MVVM框架解析之双向绑定
Jan 24 Javascript
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
vue中过滤器filter的讲解
Jan 21 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
Jun 07 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+JS实现搜索自动提示(实例)
2013/06/09 PHP
提高PHP编程效率的方法
2013/11/07 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
Python中用format函数格式化字符串的用法
2015/04/08 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
python 带时区的日期格式化操作
2020/10/23 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
医学生职业规划范文
2014/01/05 职场文书
2014的自我评价
2014/01/13 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
全陪导游词
2015/02/04 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android