结合前些天学的箭头函数我想到一种非常简短的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. FMDB的使用方法

    转自:http://blog.devtang.com/blog/2012/04/22/use-fmdb/ 前言 SQLite (http://www.sqlite.org/docs.html) 是一个 ...

  2. Python NaN

    NaN, Not a Number, 非数. 它即不是无穷大, 也不是无穷小, 而是python/numpy/... 觉得无法计算时返回的一个符号(自己的推测, 未考证(TODO)). import ...

  3. Memcached+PHP+Mysql+Linux 实践

    首先确保你的服务器环境已经具备了memcached和lamp,关于在Linux上搭建memcahced+php环境可以参考我的另外一篇帖子( http://www.cnblogs.com/codeAB ...

  4. C#计算一段程序运行时间的三种方法

    第一种方法利用System.DateTime.Now: static void SubTest() { DateTime beforDT = System.DateTime.Now; //耗时巨大的代 ...

  5. 精通Web Analytics 2.0 (10) 第八章:竞争情报分析

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第八章:竞争情报分析 在现实世界中,收集竞争情报可能意味着雇人在竞争对手的垃圾桶(实际会发生!)翻找. 在虚拟世界中,堆如山的数 ...

  6. 扩展欧几里得 exGCD

    Elementary Number Theory - Extended Euclid Algorithm Time Limit : 1 sec, Memory Limit : 65536 KB Jap ...

  7. py-faster-rcnn之python引入_caffe.so

    本文并不给出"编写一个c++代码,然后编译为.so文件,然后在python中引入"的hello world,需要的请参考:http://www.oschina.net/questi ...

  8. kvm初试0

    1.安装ubuntu 14 2.更新apt-get源 deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multi ...

  9. 10 Symbol

    Symbol 书中讲了2部分. Symbol() Symbol 属性值. 完全两种画风的东西. 1. Symbol 首先他是一种全新的值. 不属于以前的任何一种 ES6引入了一种新的原始数据类型Sym ...

  10. Caffe学习

    将binaryproto转为npy import caffe % suppose caffe is already in the path of Python import numpy as np i ...