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 相关文章推荐
js之WEB开发调试利器:Firebug 下载
Jan 13 Javascript
小型js框架veryide.librar源代码
Mar 05 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
Jun 28 Javascript
js document.write()使用介绍
Feb 21 Javascript
jquery实现翻动fadeIn显示的方法
Mar 05 Javascript
jQuery实现多级联动下拉列表查询框
Jan 18 Javascript
JS实现的表头列头固定页面功能示例
Jan 10 Javascript
setTimeout函数的神奇使用
Feb 26 Javascript
浅析vue component 组件使用
Mar 06 Javascript
微信小程序之发送短信倒计时功能
Aug 30 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
Mar 01 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
Mar 25 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
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
jQuery总体架构的理解分析
2011/03/07 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
javaScript基础语法介绍
2015/02/28 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
js性能优化技巧
2015/11/29 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
跟老齐学Python之集合的关系
2014/09/24 Python
python实现的简单猜数字游戏
2015/04/04 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
使用python实现tcp自动重连
2017/07/02 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
python中安装django模块的方法
2020/03/12 Python
PYcharm 激活方法(推荐)
2020/03/23 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
幼师自荐信
2013/10/26 职场文书
管理专员自荐信
2014/01/26 职场文书
档案保密承诺书
2014/06/03 职场文书
小学捐书活动总结
2014/07/05 职场文书
美术教师求职信范文
2015/03/20 职场文书
销售员岗位职责范本
2015/04/11 职场文书
导游词之西递宏村
2019/12/10 职场文书
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang