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 判断脚本加载完毕的代码
Jul 13 Javascript
Javascript实现页面跳转的几种方式分享
Oct 26 Javascript
js获取数组的最后一个元素
Apr 14 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
Aug 28 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
Jul 01 Javascript
Vue组件BootPage实现简单的分页功能
Sep 12 Javascript
javascript汉字拼音互转的简单实例
Oct 09 Javascript
jQuery制作图片旋转效果
Feb 02 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
Dec 06 jQuery
vue的过滤器filter实例详解
Sep 17 Javascript
微信小程序中如何使用flyio封装网络请求
Jul 03 Javascript
vue实现分页的三种效果
Jun 23 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
global.php
2006/12/09 PHP
php解决约瑟夫环示例
2014/04/09 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
JavaScript 常用函数库详解
2009/10/21 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
Python入门篇之函数
2014/10/20 Python
Python分支结构(switch)操作简介
2018/01/17 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
《小动物过冬》教学反思
2014/04/17 职场文书
质量主管工作职责
2014/09/26 职场文书
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
《群青的幻想曲》京力秋树角色PV公开
2022/04/08 日漫
golang语言指针操作
2022/04/14 Golang
php解析非标准json、非规范json的方式实例
2022/05/10 PHP