结合前些天学的箭头函数我想到一种非常简短的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. MVC项目中,如何访问Views目录下的静态文件!

    <!--注意,是system.webServer节点,而非system.web--><system.webServer> <handlers> <add na ...

  2. java-读取xml

    1.使用w3c.document /** * 测试 * */ public static void testReadLabel() { String path = "C:\\Users\\h ...

  3. css-css权威指南学习笔记8

    第十二章 列表与生成内容 1.list-style-type:cjk-ideographic生成一二三四的序号 2.不管是ul还是ol,list-style-type无法识别的值都应用为decimal ...

  4. python中__getattr__和__setattr__

    代码: #!/usr/bin/env python #! -*- coding:utf-8 -*- class A(object): def __setattr__(self, key, value) ...

  5. SpringCloud: 服务发现

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a } sp ...

  6. 【原创】JEECMS v6~v7任意文件上传漏洞(2)

    文章作者:rebeyond 受影响版本:v6~v7 漏洞说明: JEECMS是国内Java版开源网站内容管理系统(java cms.jsp cms)的简称.该系统基于java技术开发,继承其强大.稳定 ...

  7. sdk开发时,对外暴露的接口封装

    思考,用同步还是异步? 实质就是屏蔽一些东西,让使用者直接传参数 拿结果 而不用关心具体实现 eg.登陆接口 1.定义接口LoginCallBack,两个函数 请求成功和失败 public inter ...

  8. Python学习目录

    日期 科目 状态 知识点 2016.12.10 subprocess OK 执行外部shell命令 2016.12.11 threading ? 线程池,Lock,适合IO密集型应用,信号量? 201 ...

  9. [Java] Maven 镜像仓库

    配置 修改maven根目录下的conf文件夹中的setting.xml文件. 阿里云 <mirrors> <mirror> <id>alimaven</id& ...

  10. 一道Apple公司(中国)的面试题目

    Apple在中国(上海)有公司业务,但是感觉主要是做测试工作的部门,主要是保障Apple的产品质量QE.面试的时候,面试官出了一道题目,我貌似曾今开过类似的题目,但是由于当场发挥不佳没有答出来.题目大 ...