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 相关文章推荐
jq实现酷炫的鼠标经过图片翻滚效果
Mar 12 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
Mar 05 Javascript
AngularJS HTML DOM详解及示例代码
Aug 17 Javascript
纯JS焦点图特效实例(可一个页面多用)
Dec 07 Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 Javascript
JS实现touch 点击滑动轮播实例代码
Jan 19 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
Dec 19 Javascript
VSCode 配置React Native开发环境的方法
Dec 27 Javascript
对angularJs中自定义指令replace的属性详解
Oct 09 Javascript
vscode配置vue下的es6规范自动格式化详解
Mar 20 Javascript
小程序和web画三角形实现解析
Sep 02 Javascript
JS回调函数 callback的理解与使用案例分析
Sep 09 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
删除无限级目录与文件代码共享
2006/07/12 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
js验证表单第二部分
2006/11/25 Javascript
JS日历 推荐
2006/12/03 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
预加载css或javascript的js代码
2010/04/23 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python中查看文件名和文件路径
2017/03/31 Python
替换python字典中的key值方法
2018/07/06 Python
Django框架自定义session处理操作示例
2019/05/27 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
python和JavaScript哪个容易上手
2020/06/23 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
给儿子的表扬信
2014/01/15 职场文书
公司活动方案范文
2014/03/06 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
英雄儿女观后感
2015/06/09 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
世界文化遗产导游词
2019/08/07 职场文书
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android