结合前些天学的箭头函数我想到一种非常简短的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. 【Quartz】将定时任务持久化到数据库

    之前的文章所做的demo是将定时任务的信息保存在内存中的,见以下配置 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore 如果,我们需要在 ...

  2. 【转】Tomcat启用HTTPS协议配置过程

    转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/53001846 http://www.ganecheng.tech/blog/530 ...

  3. Python Pandas分组聚合

    Pycharm 鼠标移动到函数上,CTRL+Q可以快速查看文档,CTR+P可以看基本的参数. apply(),applymap()和map() apply()和applymap()是DataFrame ...

  4. bzoj 1146 [CTSC2008]网络管理Network

    很久之前写过 count on the tree. 然后一直不懂树状数组是怎么套上这个主席树的. 看了两小时发现它套的就是个权值线段树, 看不出来可持久化在哪里. 因为动态开点所以空间nlog2n. ...

  5. javascript判断数字是integer还是float

    function isFloat(n) { return n === +n && n !== (n|0); } function isInteger(n) { // 仅能检查32位的数 ...

  6. PHP获取上周、本周、上月、本月、本季度、上季度时间方法大全

    <?php     echo date("Ymd",strtotime("now")), "\n";     echo date(&q ...

  7. Couldn't open CUDA library cublas64_80.dll etc. tensorflow-gpu on windows

    I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_load ...

  8. SpringMVC学习记录4

    主题 SpringMVC有很多很多的注解.其中有2个注解@SessionAttributes @ModelAttribute我平时一般不用,因为实在是太灵活了.但是又有一定限制,用不好容易错.. 最近 ...

  9. 在本地调试移动设备上的页面——神器weinre介绍

    平时写代码,最喜欢用chrome的developer Tool调试页面了,基本是离不了的工具.但是当页面需要在移动设备上使用,尤其是被嵌入到Hybird APP中时,由于移动版的chrome没有dev ...

  10. 解决qq互联回调地址错误redirect uri is illegal(100010)的方法,不同于网上大部分方法

    我是在用ecshop自己搭建的一个网店系统安装了第三方登录的插件,包括qq登录插件.网上大部分情况都是discuz论坛的这个回调地址出错及解决办法.所以在我出错的时候参考他们的办法并不管用.但是在后面 ...