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 学习笔记(六)浏览器类型及版本信息检测代码
Apr 08 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
Nov 08 Javascript
node.js中的path.extname方法使用说明
Dec 09 Javascript
购物车前端开发(jQuery和bootstrap3)
Aug 27 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
Dec 17 Javascript
JavaScript中捕获与冒泡详解及实例
Feb 03 Javascript
canvas实现简易的圆环进度条效果
Feb 28 Javascript
vue.js实现含搜索的多种复选框(附源码)
Mar 23 Javascript
D3.js实现拓扑图的示例代码
Jun 30 Javascript
微信小程序Page中data数据操作和函数调用方法
May 08 Javascript
vue通过video.js解决m3u8视频播放格式的方法
Jul 30 Javascript
Vue中watch、computed、updated三者的区别及用法
Jul 27 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
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
用PHP调用数据库的存贮过程!
2006/10/09 PHP
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
Dojo 学习要点
2010/09/03 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
js实现动态时钟
2020/03/12 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python 判断网络连通的实现方法
2018/04/22 Python
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
python实现停车管理系统
2018/11/30 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
Django发送邮件功能实例详解
2019/09/02 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
中专生学习生活的自我评价分享
2013/10/27 职场文书
2014植树节活动总结
2014/03/11 职场文书
助理政工师申报材料
2014/06/03 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
教师节校长致辞
2015/07/31 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书