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将相对地址转换为绝对地址示例代码
Jul 19 Javascript
javascript实现存储hmtl字符串示例
Apr 25 Javascript
JSON格式化输出
Nov 10 Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 Javascript
AngularJS基础 ng-options 指令详解
Aug 02 Javascript
JavaScript实现Fly Bird小游戏
Dec 15 Javascript
原生JS实现导航下拉菜单效果
Nov 25 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
Jul 20 Javascript
JS拖拽排序插件Sortable.js用法实例分析
Feb 20 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
Mar 07 Javascript
webpack的 rquire.context用法实现工程自动化的方法
Feb 07 Javascript
JQuery获得内容和属性方法解析
May 30 jQuery
简单理解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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
深入解析php中的foreach问题
2013/06/30 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
jquery实现手风琴效果实例代码
2013/11/15 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
浅析Ajax语法
2016/12/05 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
Python程序中设置HTTP代理
2016/11/06 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
Ajax请求总共有多少种Callback
2016/07/17 面试题
户外用品商店创业计划书
2014/01/29 职场文书
数学系个人求职信范文
2014/01/30 职场文书
校长先进事迹材料
2014/02/01 职场文书
十一酒店活动方案
2014/02/20 职场文书
环保倡议书格式范文
2014/05/14 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL