如何写JS数组sort的比较函数
譬如:
var a=[1,5,3,7];
a.sort(function(a, b) { return b-a});//从大到小排列
那如果复杂点的顺序应该如何写这个比较函数呢。
对于比较函数function f(a,b){...} ,若返回正数,则说明a和b需要交换,否则不交换。所以我们可以通通根据下面的格式去写比较函数:
代码如下:
function f(a, b) {
if (...) {
return 1;
}
return -1;
}
然后,我们要做的就是写出if里面的条件,这个条件就是返回a、b需要交换的条件。譬如:对var a=["a","A","B","b"];进行不分大小写并从大到小排序,仅当a.toString().toLowerCase() < b.toString().toLowerCase()时,交换a、b,所以用此填充if条件即可。比较函数就是:
function f(a, b) {
if (a.toString().toLowerCase() < b.toString().toLowerCase()) {
return 1;
}
return -1;
}
再譬如:要使数组的元素按先奇数后偶数的顺序排列,则若需a、b交换,仅当满足a是偶数且b是奇数条件即可,再按从小到大排序,仅当满足a、b均是奇数或偶数且a>b时即可。如下:
var a = [1, 7, 3, 9, 5, 6, 2, 8, 4];
function f(a, b) {
if (0 == a % 2 && 1 == b % 2) {
return 1;
}
if ((1 == a % 2 && 1 == b % 2 || 0 == a % 2 && 0 == b % 2) && a > b) {
return 1;
}
return -1;
}
alert(a.sort(f));
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
作者:JayChow
相关推荐
-
新人报道,发个小技巧(js数组重复判断)
0 && o == t){ alert("相同的:" + o); } alert(t) t = o; }) //--> [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
-
Js数组的操作push,pop,shift,unshift等方法详细介绍
js中针对数组操作的方法还是比较多的,今天突然想到来总结一下,也算是温故而知新吧.不过不会针对每个方法进行讲解,我只是选择其中的一些来讲. 首先来讲一下push和pop方法,这两个方法只会对数组从尾部进行压入或弹出,而且是在原数组进行操作,任何的改动都是会影响到操作的数组.push(args)可以每次压入多个元素,并返回更新后的数组长度.pop()函数每次只会弹出最后一个结尾的元素,并返回弹出的元素,如果是对空组数调用pop()则返回undefined. 如果参数是数组则是将整个数组当做一个元素
-
js数组Array sort方法使用深入分析
javascript 中 Array.sort()方法是用来对数组项进行排序的 ,默认情况下是进行升序排列,实例代码如下: 复制代码 代码如下: var arrA = [6,2,4,3,5,1]; arrA.sort(); document.writeln(arrA); //结果是:1,2,3,4,5,6 sort() 方法可以接受一个 方法为参数 ,这个方法有两个参数.分别代表每次排序比较时的两个数组项.sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递给这
-
js数组中删除重复值的代码小结
js数组中去除重复值 Array.prototype.del = function() { var a = {}, c = [], l = this.length; for (var i = 0; i [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 方法二 复制代码 代码如下: //去重复数组 function unique(data){ data = data || []; var a = {}; len = data.length; for (var i=0; i<len;i++
-
js数组的操作详解
用js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一下狠心,我学!呵呵.学了之后才知道,js数组的功能强大很,远比VB,C#强多了,大家慢慢看吧 1.数组的创建 复制代码 代码如下: var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长
-
如何写JS数组sort的比较函数
譬如: var a=[1,5,3,7]; a.sort(function(a, b) { return b-a});//从大到小排列 那如果复杂点的顺序应该如何写这个比较函数呢. 对于比较函数function f(a,b){...} ,若返回正数,则说明a和b需要交换,否则不交换.所以我们可以通通根据下面的格式去写比较函数: 复制代码 代码如下: function f(a, b) { if (...) { return 1; } return -1; } 然后,我们要做的就是写出if里面的条件,
-
JS 数组sort方法的升序为什么是a-b你知道吗
简单使用 sort 方法的时候,是按位排序的,比如: var arr = [1, 22, 15, 32, 4, 5] arr.sort()//[1,15,22,32,4,5] 这样的结果很明显不能满足大多数问题的需求,所以我们可以在调用sort方法的时候,传入一个回调函数,从而改变 sort 方法的排序方式.先放结果,下列两次排序分别为 升序排序 和 降序排序 . var arr = [1, 22, 15, 32, 4, 5] arr.sort((a, b) => {return a - b})
-
如何高效率去掉js数组中的重复项
方式一: 常规模式 1.构建一个新的临时数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与临时数组对比 3.若临时数组中没有该元素,则存到临时数组中 方式二: 使用了默认Js数组sort默认排序,是按ASCII进行排序: 若要按照升降序的排列如下:<控制台打印输出> 1.先将当前数组进行排序 2.检查当前中的第i个元素 与 临时数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置 3.如果不相同,则将该元素存入结果数组中 方式三: <推荐>利
-
深入理解js数组的sort排序
废话少说直接上代码: <body> <div> sort()对数组排序,不开辟新的内存,对原有数组元素进行调换 </div> <div id="showBox"> 1.简单数组简单排序 <script type="text/javascript"> var arrSimple=new Array(1,8,7,6); arrSimple.sort(); document.writeln(arrSimple.j
-
js 数组详细操作方法及解析合集
前言 在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总结,很多时候就算用过几次这个api,在开发中也很容易忘记,还是要谷歌一下.所以就希望对这块内容有一个比较系统性的总结,在这背景下,就有了本篇文章,如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获. 创建一个数组: // 字面量方式: // 这个方法也是我们最常用的,在初始化数组的时候 相当方便 var a = [3, 11, 8]; // [3,11,8]; //
-
js数组常见操作及数组与字符串相互转化实例详解
本文实例讲述了js数组常见操作及数组与字符串相互转化方法.分享给大家供大家参考,具体如下: 数组与字符串的相互转化 <script type="text/javascript"> var obj="new1abcdefg".replace(/(.)(?=[^$])/g,"$1,").split(","); //字符串转化为数组 var obj2 = "new2abcdefg".split(&qu
-
js数组去重的5种算法实现
1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下: // 最简单数组去重法 function unique1(array){ var n = []; //一个新的临时数组 //遍历当前数组 for(var i = 0; i < array.length; i++){ //如果当前数组的第i已
-
JS中sort函数排序用法实例分析
本文实例讲述了JS中sort函数排序用法.分享给大家供大家参考,具体如下: 最近遇到了一个面试题目,关于排序的问题,为了完善自己的知识点,这里就写一下学习笔记 <html> <head> <TITLE>class_obj_js_class</TITLE> <script language=javaScript> //sort()方法默认是按照ASCII码大小排序,看下面两个例子 function sortDemo(){ var a, l; //
-
最实用的JS数组函数整理
我们以前就给大家整理过关于JS数组相关的内容,这次我们给大家整理的是非常实用的JS数组操作技巧和写法,学习下吧. instanceof 检测一个对象是否是数组;(用来对付复杂数据类型;) // 简单数据类型 typeof ; A instanceof B // A是不是B造出来的; 例: var arr = [1,2,3]; console.log(arr instanceof Array); //arr属不属于Array类型; Array.isArray( ) Array.isArray(参数
-
JS数组中常用方法技巧学会进阶成为大佬
目录 splice()方法 join()方法 reverse()方法 every()方法 reduce()方法 filter()方法 findIndex()方法 和find()方法 findIndex() find() forEach()方法 some()方法 indexOf()方法 sort ()方法 push()方法 pop()方法 unshift()方法 shift()方法 splice()方法 截取替换数组 第一个参数是起始位置,第二个是截取的个数,第三是替换的元素 ,返回值是截取的元素
随机推荐
- Python之Web框架Django项目搭建全过程
- js实现页面跳转重定向的几种方式
- Mongodb如何开启用户访问控制详解
- 通过SQL Server 2008数据库复制实现数据库同步备份
- js工具方法弹出蒙版
- SSH 使用原理 与解释
- oracle中 procedure(存储过程)和function(函数)本质区别
- Python引用模块和查找模块路径
- ASP.NET使用X509Certificate2出现一系列问题的解决方法
- PHP类的静态(static)方法和静态(static)变量使用介绍
- 你可能不知道的Vim使用小技巧
- Go语言中函数的参数传递与调用的基本方法
- Vue网页html转换PDF(最低兼容ie10)的思路详解
- 微信小程序 TLS 版本必须大于等于1.2问题解决
- 同时使用n个window onload加载实例介绍
- Jquery针对tr td的一些实用操作方法(必看篇)
- java设计模式之组合模式(Composite)
- php获取服务器操作系统相关信息的方法
- js实现千分符和保留几位小数的简单实例
- 深入理解JavaScript编程中的同步与异步机制