因为原装的sort这个API其实是先把要比较的数转换为字符串再进行比较的,所以并不好用

所以准备自定义一个比较器函数:

   //sort原理--->sort(arr,compare)
function sort(arr,compare){
if(compare===undefined){//如果compare未定义,则创建一个compare原装比较器,都转化为字符串进行比较,如果传入了自定义比较器,则调用自定义比较器进行排序
compare=function (a,b){//原装比较器
return String(a)>String(b)?1://大于0则返回1
String(a)>String(b)?-1://小于0则返回-1
0;//否则返回0
}
}
for(var r=1;r<arr.length;r++){//比较次数
for(var i=0;i<arr.length-r;i++){//前后两两比较
if(compare(arr[i],arr[i+1])>0){//如果x大于y
var temp=arr[i];//将x的值给第三方temp
arr[i]=arr[i+1];//将y的值给x
arr[i]=temp;//再将temp的值给x
}//也就是x和y互换位置
}
}
}
//创建自定义比较器函数
/*function cmp(x,y){
return x-y;
}*/
var cmp=function(a,b){return a-b;}//可以直接写在sort(cmp)中,sort(function(a,b){return a-b;});
var arr=[8,3,123,15,4,9,7,1,2];
arr.sort();//使用默认sort排序
console.log(arr.join(" "));
var arr2=[8,3,123,15,4,9,7,1,2];
arr2.sort(cmp);//使用自定义比较器函数排序,如果sort(cmp()),则是只执行了一次,sort(cmp)表示将cmp函数给予sort使用
arr2.reverse();//降序排列,先sort升序,再用reverse反转
console.log(arr2.join(" "));

JavaScript--数组--sort比较器的更多相关文章

  1. JavaScript 数组sort方法使用

    直接上例子 1.无参调用返回按unicode字符编码排序 var arr = [1,2,0,21,15,6,34,9,45]; var arrSort = arr.sort(); console.lo ...

  2. javascript:算法之数组sort排序

    数组sort排序 sort比较次数,sort用法,sort常用 描述 方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本.如果调用方法sort()时没有使用参数,将按字母顺序( ...

  3. Javascript数组操作

    使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...

  4. Javascript数组操作(转)

    1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...

  5. JavaScript 数组

    JavaScript 数组 简介:数组是值的有序集合,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改. 一:创建数组 ...

  6. 也谈面试必备问题之 JavaScript 数组去重

    Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...

  7. javascript数组对象排序

    javascript数组对象排序 JavaScript数组内置排序函数 javascript内置的sort函数是多种排序算法的集合 JavaScript实现多维数组.对象数组排序,其实用的就是原生的s ...

  8. javascript数组的知识点讲解

    javascript数组的知识点讲解 阅读目录 数组的基本方法如下 concat() join() pop() push() reverse() shift() sort() splice() toS ...

  9. JavaScript数组方法总结

    由于最近都在freecodecamp上刷代码,运用了很多JavaScript数组的方法,因此做了一份关于JavaScript教程的整理,具体内容如下: 一.普通方法 1.join() 将数组元素连接在 ...

  10. Javascript数组方法(译)

    在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...

随机推荐

  1. SVN:分支合并到主干

    合并日志: --- Merging r173674 through r175986 into '.': C src/test/java/com/test/rigel/sandbox/organizat ...

  2. 【HDOJ】1401 Solitaire

    双向BFS+状态压缩. /* 1401 */ #include <iostream> #include <queue> #include <map> #includ ...

  3. Pie(二分)

    ime Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8930   Accepted: 3235   Special Judge De ...

  4. BZOJ1572: [Usaco2009 Open]工作安排Job

    1572: [Usaco2009 Open]工作安排Job Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 775  Solved: 337[Submit ...

  5. wikioi3363支线剧情(挖个坑,不会做。。。)

    3363 支线剧情 题目描述 Description 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往都有很多 ...

  6. codeforce-191E-Thwarting Demonstrations(树状数组+二分+离散)

    题意: 求第K 大连续区间 分析: 二分答案,再n * log(n)判断有几个区间的区间和大于mid,然后调整上下界,使这个值不断的接近k. 判断符合条件的区间总数:线性扫描sum[n](前n项和) ...

  7. Eclipse ARM IDE 开发环境

    一.Eclipse Eclipse的本身只是一个框架平台,但是众多插件的支持,使得Eclipse拥有较好的灵活性. 二.CDT CDT是Eclipse用于扩展Eclipse支持C/C++开发的插件. ...

  8. Spfa费用流模板

    ; ,maxm=; ,fir[maxn],nxt[maxm],to[maxm]; int cap[maxm],val[maxm],dis[maxn],path[maxn]; void add(int ...

  9. PowerDesigner自定义Word导出格式

    本文主要讲解如何将PDM的表结构导出成word以及如何自定义导出格式和显示效果,希望对大家有所帮助...(以下步骤以PowerDesigner 15版本为例) 一.新建导出报表,进入报表设计界面: 1 ...

  10. SafeNet推出行业首款白盒password软件保护解决方式

    数据保护领域的全球率先企业SafeNet公司日前宣布,推出行业首款採用白盒安全技术的的软件保护方案.SafeNet 圣天诺 软件授权与保护解决方式如今纳入了新的功能,可在"白盒" ...