详解数组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 相关文章推荐
createElement动态创建HTML对象脚本代码
Nov 24 Javascript
javascript 异步页面查询实现代码(asp.net)
May 26 Javascript
密码框显示提示文字jquery示例
Aug 29 Javascript
特殊情况下如何获取span里面的值
May 20 Javascript
jQuery和AngularJS的区别浅析
Jan 29 Javascript
JavaScript_ECMA5数组新特性详解
Jun 12 Javascript
select自定义小三角样式代码(实用总结)
Aug 18 Javascript
详解vue 实例方法和数据
Oct 23 Javascript
JS中promise化微信小程序api
Apr 12 Javascript
vue地区选择组件教程详解
May 04 Javascript
JSON基本语法及与JavaScript的异同实例分析
Jan 04 Javascript
element中的$confirm的使用
Apr 26 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
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
ajax缓存问题解决途径
2006/12/06 PHP
PHP入门学习笔记之一
2010/10/12 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
Javascript !!的作用
2008/12/04 Javascript
javascript 面向对象思想 附源码
2009/07/07 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
js常用DOM方法详解
2017/02/04 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
python控制台英汉汉英电子词典
2020/04/23 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
sealed修饰符是干什么的
2012/10/23 面试题
前台文员我鉴定
2014/01/12 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
行政申诉状范文
2015/05/20 职场文书
2016情人节宣传语
2015/07/14 职场文书
学生会部长竞选稿
2015/11/19 职场文书