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. eclipse 设置字体与自动提示

    1.设置字体与字体大小 至此,字体与大小设置完毕. 2.设置自动提示 在输入框中输入 1-9 a-z A-Z .点击“Apply”保存. 开启JavaScript 自动提示 灰色未激活,先点击复选框激 ...

  2. Warning: $HADOOP_HOME is deprecated. hadoop解决方法补充版

    下面的解决方案我亲自试了没有问题:可行,但是对于初学者来说肯定会有一个疑问:这个.bash_profile文件到底在哪呢:其实很简单: 当前用户的.bash_profile在/home/用户/下,系统 ...

  3. TCP\IP协议簇-分层模型

    OSI 模型   数据单元 层 功能 主机层 Data(数据) 7. 应用层 网络进程到应用程序. 6. 表示层 数据表示形式,加密和解密,把机器相关的数据转换成独立于机器的数据. 5. 会话层 主机 ...

  4. 我们一起学React Native(一):环境配置

    最近想在项目中实现跨平台,对比一下主流的实现方式,选用了React Native.参考网上的教程,对于一直都是原生移动端开发,对前端的知识不是很了解的,感觉入门不是特别简单.于是打算把学习React ...

  5. for循环的应用

    for循环的应用:迭代法,穷举法. 一.迭代法:(有一定规律) 每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算做准备. 例:1.100以内所有数的和. int sum = 0;f ...

  6. SpringMVC之请求响应(上)

    1.OutPutController package com.tz.controller; import java.util.Map; import org.springframework.stere ...

  7. 4 Values whose Sum is 0 (二分+排序)

    题目: The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, com ...

  8. 大家都在关注AI,但这些事你可能并不知道!

    我们正处在第四次工业革命,其特点是机器人和自驾车技术的进步,智能家电的泛滥等等.所有这些最前沿的是人工智能(AI),也是自动化计算机系统的发展,可以匹配甚至超过人类的智力. 你的自动驾驶可能会编程杀死 ...

  9. Soulwail

    XMLHttpRequest 属性解读 首先在 Chrome console 下创建一个 XMLHttpRequest 实例对象 xhr.如下所示: inherit 试运行一下代码. var xhr ...

  10. 《SDN期末作业——实现负载均衡》

    队名:取个队名真难 一.网络拓扑(场景二) 二.负载均衡程序 1.建立拓扑的代码 拓扑 2.下发组表流表的代码 下发组表流表 三.演示视频 1.目的 服务器h2,h3,h4上各自有不同的服务,h1是客 ...