结合前些天学的箭头函数我想到一种非常简短的sort排序写法:(这可能是最短的英文名排序方法了)

贴出来大家一起探讨一下:

[4,1,2,32].sort((x,y)=>x>y); //[1, 2, 4, 32]

//对字母也生效
[4,1,2,32,'b','ac','a'].sort((x,y)=>x>y);
//[1, 2, 4, 32, "a", "ac", "b"] //英文名排序
['Jhon','Ben','Anna'].sort((x,y)=>x>y);
//["Anna", "Ben", "Jhon"] //英文姓+名排序
["Prancer Chua", "Blitzen Claus", "Cupid Foroutan","Comet Karavani", "Dancer Moore", "Dasher Tonoyan"].sort((x,y)=>x>y); //["Blitzen Claus", "Comet Karavani", "Cupid Foroutan", "Dancer Moore", "Dasher Tonoyan", "Prancer Chua"]

下面是Arry.sort()的知识点回顾备忘 —_—


  1. sort函数原型

定义 :

sort() 方法用于对数组的元素进行排序(默认升序)。


语法 :

ArrayObject.sort(function)

参数 描述
function 可选。规定排序顺序。必须是函数。

返回值 : 排序好的原数组

返回对数组的引用。请注意,数组在原数组上进行排序,不生成副本。


说明:

1.如果调用该方法时没有使用参数(即array.sort()),函数将调用数组每项的toString()方法,然后比较每项的字符串来确定排序。(所以含2位数字的排序就不正常了)

[4,1,2,32].sort(); //[1, 2, 32, 4] 出错

2.大多情况下(例如排序含超过2位数字的数组)需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。

比较函数应该具有两个参数 a 和 b,其应返回值如下:

  • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。
  • 简单来说就是,想象当前仅有2个数ab需要排序,返回值>=1,ab的位置对调。返回其他值则不变。
  • 扩展到多个数排序,只要判断a>b,返回1,ab的位置对调为ba(此时为保证b在a的前面),就能实现升序。

一个常见的用例 eg:

function compair(value1,value2){ if(value1>value2) return 1;}

[4,1,2,32].sort(compair); //[1, 2, 4, 32]

结合前些天学的箭头函数我想到一种更简短的方法:

[4,1,2,32].sort((x,y)=>x>y); //[1, 2, 4, 32]

//对字母也生效
[4,1,2,32,'b','ac','a'].sort((x,y)=>x>y);
//[1, 2, 4, 32, "a", "ac", "b"] //英文名排序
['Jhon','Ben','Anna'].sort((x,y)=>x>y);
//["Anna", "Ben", "Jhon"] //英文姓+名排序
["Prancer Chua", "Blitzen Claus", "Cupid Foroutan","Comet Karavani", "Dancer Moore", "Dasher Tonoyan"].sort((x,y)=>x>y); //
["Prancer Chua", "Blitzen Claus", "Cupid Foroutan","Comet Karavani", "Dancer Moore", "Dasher Tonoyan"].sort((x,y)=>x>y)

另外更常用在按对象列表的某一属性(比如按年龄)排序

var objectList2 = new Array();
functionWorkMate(name,age){
  this.name=name;
  this.age=age;
}
objectList2.push(new WorkMate('jack',20));
objectList2.push(new WorkMate('tony',25));
objectList2.push(new WorkMate('stone',26));
objectList2.push(new WorkMate('mandy',23));
//
按年龄从小到大排序
objectList2.sort(function(a,b){
  return a.age - b.age;
});
//[WorkMate age: 20name: "jack", WorkMate age: 25 name: "tony", WorkMate age: 26 name: "stone"]

sort()基础知识总结+超简短的英文名排序写法的更多相关文章

  1. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  2. java 基础知识-数组的7种算法(排序、求和、最值、遍历...)

    遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...

  3. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  4. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  5. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  6. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  7. [SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式

    SQL 基础知识梳理(六)-  函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2. ...

  8. [SQL] SQL 基础知识梳理(七)- 集合运算

    SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...

  9. Appium+python自动化(十五)- Android 这些基础知识,你知多少???(超详解)

    简介 前边具体操作和实战已经讲解和分享了很多了,但是一些android的一些基础知识,你又知道多少了,你都掌握了吗?这篇就由宏哥给小伙伴们既是一个分享,又是对前边的一次总结.为什么要对这些做一个简单的 ...

随机推荐

  1. C#使用zxing,zbar,thoughtworkQRcode解析二维码,附源代码

    最近做项目需要解析二维码图片,找了一大圈,发现没有人去整理下开源的几个库案例,花了点时间 做了zxing,zbar和thoughtworkqrcode解析二维码案例,希望大家有帮助. zxing是谷歌 ...

  2. Azure 带宽

    Azure带宽与Azure Blob云存储 http://www.cnblogs.com/threestone/p/4497625.html

  3. linux下交叉编译go项目

    1:下载go源码,以1.7.1版本为例: wget https://storage.googleapis.com/golang/go1.7.1.linux-amd64.tar.gz 2:解压源码 ta ...

  4. cookie

    1.基本操作 Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给 ...

  5. [速记]关于指针,引用和递归和解递归——C++

    在写基于二叉排序树的查找时,分为三个过程 1.二叉排序树的插入 2.二叉排序树的建立 3.基于二叉排序树的查找 其中第三部可以递归方式实现,也可以用while循环解递归,于是我想也解解第一步的递归,看 ...

  6. [个人论文]一种基于GPU并行计算的MD5密码解密方法

    求轻喷... [顺便get一份LaTeX论文模板....还是XeLaTex好用.珍爱生命远离CJK http://files.cnblogs.com/files/pdev/paper.zip

  7. WEB开发最佳实践

    linux命令 man ls:显示ls的命令详情,man命令可以查具体的命令详情

  8. php截取中文无乱码

    在PHP中需要对字符串进行截取,如果没有装mb扩展(mb_substr函数),对中文截取就需要进行相应的处理.下面是对字符串 "世s界s的功s\\\夫萨的mn是非得失sdf dsf dsf ...

  9. HD3033I love sneakers!(分组背包+不懂)

    I love sneakers! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  10. 论php数组合并

    注:尽量不要在循环中操作数据库. 1.两个一维数组合并成一个一维数组 $a = array('morning','afternoon','night'); $b = array('breakfast' ...