详解数组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 相关文章推荐
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
apycom出品的jQuery精美菜单破解方法
Feb 18 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
Jul 22 Javascript
原生js的弹出层且其内的窗口居中
May 14 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
Oct 21 Javascript
浅谈Cookie的生命周期问题
Aug 02 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
Oct 26 Javascript
原生js实现可爱糖果数字时间特效
Dec 30 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
Jul 13 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
Oct 18 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
Mar 02 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
ASP知识讲座四
2006/10/09 PHP
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
2020/04/21 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
详解Python核心对象类型字符串
2018/02/11 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
捐助倡议书范文
2014/04/15 职场文书
中国梦口号
2014/06/13 职场文书
机电专业求职信
2014/06/14 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
领导干部失职检讨书
2015/05/05 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
Python基础之常用库常用方法整理
2021/04/30 Python
vue 实现上传组件
2021/05/31 Vue.js
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技