JavaScript数组内置排序函数
javascript内置的sort函数是多种排序算法的集合
JavaScript实现多维数组、对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序。
sort() 方法用于对数组的元素进行排序。语法如下:
返回值为对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。a,b视为相等
- 若 a 大于 b,则返回一个大于 0 的值。b应该排在a的后面
//by函数接受一个成员名字符串做为参数
//并返回一个可以用来对包含该成员的对象数组进行排序的比较函数
var by = function(name)
{
return function(o, p)
{
var a, b;
if (typeof o === "object" && typeof p === "object" && o && p)
{
a = o[name];
b = p[name];
if (a === b) {return 0;}
if (typeof a === typeof b) { return a < b ? -1 : 1;}
return typeof a < typeof b ? -1 : 1;
}
else {throw ("error"); }
}
}
var employees=[]
employees[0]={name:"George", age:32, retiredate:"March 12, 2014"}
employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"}
employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"}
employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"}
employees.sort(by("age"));
alert(employees);
到这里,对象数组排序就算基本实现了。那如何实现多个键值排序呢?意思就是先是对age排序,如果age相同,再比较name。
这时,我们可以进一步修改by函数,让其可以接受第二个参数,当主要的键值产生一个匹配的时候,另一个compare方法将被调用以决出高下。
//by函数接受一个成员名字符串和一个可选的次要比较函数做为参数
//并返回一个可以用来包含该成员的对象数组进行排序的比较函数
//当o[age] 和 p[age] 相等时,次要比较函数被用来决出高下
var by = function(name,minor)
{
return function(o, p)
{
var a, b;
if (typeof o === "object" && typeof p === "object" && o && p)
{
a = o[name];
b = p[name];
if (a === b) {return typeof minor==='function' ?minor(o,p):0;}
if (typeof a === typeof b) { return a < b ? -1 : 1;}
return typeof a < typeof b ? -1 : 1;
}
else {throw ("error"); }
}
}
var employees=[]
employees[0]={name:"George", age:32, retiredate:"March 12, 2014"}
employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"}
employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"}
employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"}
employees.sort(by('age',by('name')));
alert(employees);
转载于:https://www.cnblogs.com/kycool/archive/2011/10/25/2223473.html
JavaScript数组内置排序函数相关推荐
- JavaScript数组内置方法-知识
/* * 数组中常用的内置方法:基于这些方法可以让我们有效的对数组进行操作 * console.dir(Array.prototype) 查看数组内置方法 ...
- java 内置排序函数_java排序函数
7. 数组排序 函数:Arrays.sort(); [java] view pl... 在 caller 的实例中,将实现了 A 接口的对象的引用传给 caller,后调用 call()方法; 注意: ...
- javascript内置顶层函数
javascript 内置顶层函数 名词解释: 1.函数 2.内置: ECMAscript 内置函数:ECMAscript 自带的函数 Number() 宿主函数: BOM DOM al ...
- java使用数组排序方法_java数组中的排序问题(冒泡排序方法的实现,及内置排序算法的应用)...
在编程过程中对数组的运用也是很关键的,我们往往需要利用到数组,其中有一点就是当涉及到数组的排序问题,我们应该如何解决? 今天我来介绍两种常用的排序方法 一,冒泡排序序法 冒泡排序的原理: 1.比较相邻 ...
- javascript的内置对象以及BOM(定时器,location)
javascript的内置对象以及BOM 内置对象 Number 代码演示 <script>//1. parseFloat() 将传入的字符串浮点数转为浮点数document.write( ...
- 【Matlab入门】使用内置的函数和常量
使用内置的函数和常量 基本函数 三角函数 atan(a/b):根据正切求角度,范围为[−π2,π2{-}\frac{\pi }{2},\frac{\pi }{2}−2π,2π] atan2(a,b ...
- VBA与Excel内置的函数
了解VBA与Excel内置的函数,能够使我们处理起任务来事半功倍.这些函数不仅使用方便,而且效率一般都比较高(有些是例外的,特别是某些工作表函数),比我们自己写的要高效的多. VBA内置的函数 VBA ...
- JavaScript之基础-9 JavaScript String(内置对象、String概述、字符串常用操作、模式匹配)...
一.JavaScript 内置对象 内置对象 - 什么是内置对象? 内置对象就是ECMAScript标准中已经定义好的,由浏览器厂商已经实现的标准对象 - 内置对象中封装了专门的数据和操作数据常用的A ...
- awk内置字符串函数详解
awk提供了许多强大的字符串函数,见下表: awk内置字符串函数 gsub(r,s) 在整个$0中用s替代r gsub(r,s,t) 在整个t中用s替代r index(s,t) 返回s中字符串t的第一 ...
最新文章
- R使用lm构建单变量线性回归模型
- [HAOI 2010]软件安装
- exit()与_exit()函数的区别
- 天联高级版客户端_金万维天联高级版服务器安装配置全流程以及客户端登录流程...
- 【BZOJ】【4145】【AMPPZ2014】The Prices
- 前端学习(1545):模型和控制器
- delphi 获取桌面路径
- 用户不在sudoers文件中,需要使用命令 sudo npm install 的解决方法
- Spring包的依赖关系以及提供下载
- 单片机最小系统c语言报告,单片机最小系统实验报告.doc
- 2019一注结构成绩_2019年福建地区计算机考研汇总分析
- hasOwnProperty()方法与in操作符
- 蜗牛星际B双 安装黑群晖7.1(U盘引导)
- java连接ftp服务器
- 贴片DO-218AB封装TVS二极管SM8T33A
- 显卡故障软件测试,显卡软硬件故障检查与排除实战
- 使用DevIL来加载OpenGL纹理
- FFmpeg完美编译iOS版本
- CocosCreator幼麟麻将搭建步骤
- 百万用户同时在线游戏服务器架构实现.doc 基于epoll 通信模型
热门文章
- 最有效的创建大数据模型的6个技巧
- c++单链表【构造函数、运算符重载、析构函数、增删查改等】
- Android Volley框架的使用(二)
- Zimbra高级应用之-双向证书认证(一)
- 判断DataRow中某列是否为空的方法
- 硬盘数据恢复经验(转)
- select函数分析
- 关于RTP时间戳及多媒体通信同步的问题/H264关于RTP协议的实现
- HALCON示例程序color_fuses_lut_trans.hdev通过颜色对保险丝进行分类
- 【pyqt5】——入门级模板(ui文件+ui转py文件+逻辑py文件)(消息提示框)