Sort()函数的多种用法


Posted in Javascript onMarch 20, 2016

sort() 方法用于对数组的元素进行排序。包含于头文件algorithm

语法

arrayObject.sort(sortby)

参数 描述
sortby 可选。规定排序顺序。必须是函数。

返回值

对数组的引用。请注意,数组在原数组上进行排序,不生成副本。

一、默认情况

在默认情况下, sort() 方法按升序排列数组项。为了实现排序, sort() 方法会调用每个数组项的 toString() 转型方法,然后比较得到的字符串,已确定如何排序。如下:

var values = ["orange","apple","banana"];
values.sort();
console.log(values);//结果["apple", "banana", "orange"]

但是,即使数组中的每一项都是数值,sort() 方法比较的也是字符串,如下:

var values = [,,,,];
values.sort();
console.log(values);//结果[, , , , ]

二、对数值进行排序

sort() 方法可以接收一个比较函数作为参数。

比较函数接收两个参数,如果第一个参数应该位于第二参数之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数位于第二个之后则返回一个正数。

function compare(a, b){
return (a - b);
}//按升序排列的比较函数
var values = [,,,,];
values.sort(compare);
console.log(values);//结果[, , , , ]

三、根据某个对象属性对数组进行排序

先定义一个函数,它接收一个属性名,然后根据这个属性名来创建一个比较函数。下面是这个函数的定义:

function createComparisonFunction(propertyName){
return function(object, object){
var a = object[propertyName];
var b = object[propertyName];
if(a < b){
return -;
}else if(a > b){
return ;
}else{
return ;
}
}
}//返回一个根据属性名创建的按升序排列的比较函数

在内部函数接收到propertyName参数后,它会使用方括号表示法来取得给定属性的值。

上面这个函数可以在像在下面例子中这样使用。

var data = [{name:"Lily", age: }, {name:"Judy", age: }];
data.sort(createComparisonFunction("name"));
console.log(data[].name);//Judy
data.sort(createComparisonFunction("age"));
console.log(data[].name);//Lily

以上内容是小编给大家介绍的Sort()函数的多种用法,希望对大家以上帮助!

Javascript 相关文章推荐
一款JavaScript压缩工具:X2JSCompactor
Jun 13 Javascript
给Function做的OOP扩展
May 07 Javascript
jQuery中wrapAll()方法用法实例
Jan 16 Javascript
JavaScript获得页面base标签中url的方法
Apr 03 Javascript
微信jssdk在iframe页面失效问题的解决措施
Mar 03 Javascript
JS Ajax请求如何防止重复提交
Jun 13 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
关于Vue实现组件信息的缓存问题
Aug 23 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
Aug 16 Javascript
JS中使用new Option()实现时间联动效果
Dec 10 Javascript
解决小程序无法触发SESSION问题
Feb 03 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 Javascript
简单理解JavaScript中的封装与继承特性
Mar 19 #Javascript
JavaScript的函数式编程基础指南
Mar 19 #Javascript
深入解析JavaScript中函数的Currying柯里化
Mar 19 #Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
Mar 19 #Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
Aug 21 #Javascript
JQuery用户名校验的具体实现
Mar 18 #Javascript
基于javascript实现页面加载loading效果
Sep 15 #Javascript
You might like
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
js获取图片大小的函数代码
2011/09/20 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
构建Python包的五个简单准则简介
2015/06/15 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
python中如何使用insert函数
2020/01/09 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
python如何快速拼接字符串
2020/10/28 Python
python 下载文件的多种方法汇总
2020/11/17 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
生物化学研究助理员求职信
2013/10/09 职场文书
百年校庆节目主持词
2014/03/27 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
python如何将mat文件转为png
2022/07/15 Python