sort方法不仅按字母顺序进行排序,还可以根据其他顺序执行操作.这时就必须为方法提供一个比较函数的参数,该函数要比较两个值,然后返回一个用于说明这两个值得相对顺序的数字.比较函数应该具有两个参数a和b,其返回值如下:

  1. 如果根据自定义评判标准,a小于b,在排序后的数组中a应该出现在b之前,就返回一个小于0的值
  2. 如果a等于b,就返回0
  3. 如果a大于b,就返回一个大于0的值

  下面的示例中,将根据比较函数来比较数组中每个元素的大小,并按从小到大顺序排序

function f(a,b){
return (a-b)
}
var a = [4,3,5,6,7,3,6,8]
a.sort(f)
console.log(a); //[3, 3, 4, 5, 6, 6, 7, 8]

如果是从大到小,则让返回值取反就好

function f(a,b){
return -(a-b)
}
var a = [4,3,5,6,7,3,6,8]
a.sort(f)
console.log(a); //[8, 7, 6, 6, 5, 4, 3, 3]

(1) 根据奇偶性值排列数组

  sort方法用法比较灵活,但更灵活的是对比较函数的设计.例如:要根据奇偶数顺序排列数组,只需要判断比较函数中两个参数是否为奇偶数,并决定排列顺序

function f(a,b){
var a = a%2
var b = b%2
if(a==0) return 1
if(b==0) return -1
} var a = [3,1,2,4,5,7,6,8,0,9]
a.sort(f)
console.log(a); //[3, 1, 5, 7, 9, 0, 8, 6, 4, 2]

  sort方法在调用比较函数时,将每个元素值传递给比较函数,如果元素值为偶数,则保留其位置不动,如果元素值为奇数,则调换参数a和b的显示顺序,从而实现数组中所有元素执行奇偶排序.

(2) 不区分大小写排序字符串

如果不希望区分字母大小,也就是说大写字母和小写字母按相同顺序排列

function f(a,b){
var a = a.toLowerCase;
var b= b.toLowerCase;
if(a<b){
return 1
}else{
return -1
}
}
var a = ['aB','Ab','Ba','bA']
a.sort(f)
console.log(a); // ["aB", "Ab", "Ba", "bA"]

(3) 把浮点数和整数分开排列

function f(a,b){
if(a>Math.floor(a)){
return 1
}
if(b>Math.floor(b)){
return -1
}
} var a = [3.555,3,2.111,5,7,3]
a.sort(f)
console.log(a); //[3, 5, 7, 3, 2.111, 3.555]

建议11:增强数组排序的sort功能的更多相关文章

  1. 企业IT管理员IE11升级指南【1】—— Internet Explorer 11增强保护模式 (EPM) 介绍

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  2. 增强 Jupyter Notebook的功能

    增强 Jupyter Notebook的功能 Jupyter Notebook 是所有开发者共享工作的神器,它为共享 Notebooks 提供了一种便捷方式:结合文本.代码和图更快捷地将信息传达给受众 ...

  3. 自己实现简单的AOP(三) 实现增强四项基本功能

    前面的两篇随笔,都是只是个铺垫,真正实现增强四项基本功能的重头戏,在本篇随笔中, 本文将通过AOP实现如下的四个基本功能: /// <para>1.自动管理数据库连接[可选]</pa ...

  4. Sort功能极强!

    Sort功能极强! 可以排string:  sort(a.begin(),a.end()); 普通数组 结合结构体 逆序 而且贼快

  5. 编写高质量代码改善C#程序的157个建议——建议11: 区别对待==和Equals

    建议11: 区别对待==和Equals 在开始本建议之前,首先要明确概念“相等性”.CLR中将“相等性”分为两类:“值相等性”和“引用相等性”.如果用来比较的两个变量所包含的数值相等,那么将其定义为“ ...

  6. 分布式图数据库 Nebula RC2 发布:增强了 CSV Importer 功能

    Nebula Graph 是开源的分布式图数据库,可应用于知识图谱.社交推荐.风控.IoT 等场景. 本次 RC2 主要新增 GO FROM ... REVERSELY 和 GROUP BY 等语句, ...

  7. 关闭 OSX 10.11 SIP (System Integrity Protection) 功能

    关闭 OSX 10.11 SIP (System Integrity Protection) 功能 来源 https://cms.35g.tw/coding/%E9%97%9C%E9%96%89-os ...

  8. 调试错误,请回到请求来源地,重新发起请求。 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足,建议在开发者中心检查对应功能是否已经添加

    接人H5手机网站支付宝支付时,已经将表单发给页面了,支付宝响应调试错误,请回到请求来源地,重新发起请求.错误代码 insufficient-isv-permissions 错误原因: ISV权限不足, ...

  9. JS编程建议——11:慎重使用伪数组

    建议11:慎重使用伪数组JavaScript没有真正的数组,因此typeof运算符不能辨别数组和对象.伪数组在JavaScript中有很高的易用性,程序员不用给它设置维度,而且永远不用担心产生越界错误 ...

随机推荐

  1. async样例

    function iniProcessDetail(isjob) { var cursor = logColl.find({}).sort({ip: 1}); var insertbolk = []; ...

  2. Android目录结构(详解)

    Android目录结构(详解) 下面是HelloAndroid项目在eclipse中的目录层次结构: 由上图可以看出项目的根目录下共有九个文件(夹),下面就这九个文件(夹)进行详解: 1.1src文件 ...

  3. python自动化测试之函数(匿名函数lambda和三目运算等(高级用法))

    ''' 匿名函数: lambda ''' def Add(a,b): print(a+b) Add(2,3) per = lambda a,b:a+b print(per(2,3)) ''' 三目运算 ...

  4. spring学习笔记二:spring使用构造方法注入(set方式注入)

    项目目录树: 1.spring的依赖包配置 * SPRING_HOME/dist/spring.jar * SPRING_HOME/lib/log4j/log4j-1.2.14.jar * SPRIN ...

  5. haproxy笔记之六:负载均衡MySQL服务的配置示例

    #--------------------------------------------------------------------- # Global settings #---------- ...

  6. Memcached笔记——(三)Memcached使用总结

    为了将N个前端数据同步,通过Memcached完成数据打通,但带来了一些新问题: 使用iBatis整合了Memcached,iBatis针对每台server生成了唯一标识,导致同一份数据sql会产生不 ...

  7. python数据类型简介

    python中的注释:注释仅仅是给人看的,python并不进行识别. 注释的分类: 单行注释:# 多行注释:用三对单引号或双引号 与用户交互: 1.python3中输入 关键字:input() pyt ...

  8. 将配置好的虚拟机文件导入VMware

    第一步:打开VMware Workstation Pro 第二步:  选择文件,图示: 第三步:点击打开,选择配置好的虚拟机文件目录 点击打开就ok了,图示

  9. Promise 的含义

    Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Pro ...

  10. 自动化移动安全渗透测试框架:Mobile Security Framework

    自动化移动安全渗透测试框架:Mobile Security Framework 译/Sphinx  测试开发社区  7月3日 Mobile Security Framework (移动安全框架) 是一 ...