需求:使用随机数来打印出0-10,并排序。

代码:

var a = new Array();
var testArray = function() {
while (1) {
var b = parseInt(Math.random() * 11);
if (a.indexOf(b) === -1) {
a.push(b);
}
if (a.length >= 11) {
break;
}
}
a.sort(function(a, b) {
return a - b;
});
console.log(a);
}
testArray();

结果:

关于sort()方法,当不传入任何参数时,会按照字母表中的顺序进行排序

如:

var a = new Array();
var testArray = function() {
while (1) {
var b = parseInt(Math.random() * 11);
if (a.indexOf(b) === -1) {
a.push(b);
}
if (a.length >= 11) {
break;
}
}
a.sort();
console.log(a);
}
testArray();

结果:

所以使用sort()时,应当传入比较函数,比较函数可以有两个参数a,b,当两数相减,结果<0,则第一个参数放在前,反之在后,依次排序,如:参数顺序为a,b,若a-b<0,则a在前b在后,而比较函数为b-a时,b-a<0,第一个参数在前,即a在前(但此时a比b大,即从大到小的排序)。由于鄙人悟性低,理解能力差,表达能力也差,在看书时被绕了好久,此时说也说不清,于是举以下例子:

1.从小到大排序(以下代码为比较函数中的内容)

function(a,b){
return a-b;
} function(1,3){
return 1-3;
}

当传入1,3时,1-3<0,所以第一个参数'a'在前,顺序即[1,3]。

2.从小到大排序

function(a,b){
return a-b;
} function(3,1){
return 3-1;
}

此时按3,1的顺序传入,3-1大于0,所以第一个参数'a'在后,顺序为[1,3]。

3.从大到小排序

function(a,b){
return b-a;
} function(1,3){
return 3-1;
}

此时按1,3的顺序传入,3-1大于0,所以第一个参数'a'在后,顺序为[3,1]。

4.从大到小排序

function(a,b){
return b-a;
}

function(3,1){
return 1-3;
}

(为啥不能上传代码了。。。)

此时按3,1的顺序传入,1-3小于0,所以第一个参数'a'在前,顺序即[3,1]。

总结:前端技术日新月异,作为初学者的我,在关注技术动态的时候,当时刻不忘基础知识,时时巩固。

个人对sort()排序方法中比较函数一直很混乱,今日理清的更多相关文章

  1. <JavaScript>数组的sort()方法中比较函数是怎么工作的

    sort()函数比较时调用的是每个数组项的toString()方法,并非按数值大小进行比较,所以往往得不到我们想要的结果. 比如: ,,,,]; values.sort( ); alert(value ...

  2. 解析JavaScript中的sort()排序方法以及原理

    Array.sort()方法将数组中的元素进行排序,返回排序后的数组,默认是按照升序排序的.sort方法会调用数组中每一项的toString()方法,然后按照ascii编码进行排序,如果数组含有und ...

  3. js数组sort排序方法的算法

    说明一下,ECMAScript没有定义使用哪种排序算法,各个浏览器的实现方式会有不同.火狐中使用的是归并排序,下面是Chrome的sort排序算法的实现. sort方法源码 DEFINE_METHOD ...

  4. JAVA Collections工具类sort()排序方法

    主要分析内容: 一.Collections工具类两种sort()方法 二.示例 一.Collections工具类两种sort()方法 格式一: public static <T extends ...

  5. 关于Collections.sort()排序方法的源码探索

    /**下面在自己代码中使用Collections.sort()方法去比较Student对象,通过在自己写的类里面通过匿名内部类实现Comparator接口,这个接口是让你自己实现比较器的规则*/ // ...

  6. java排序方法中的选择排序方法

    每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完. package array; //选择排序方法 public class arra ...

  7. java数组中的三种排序方法中的冒泡排序方法

    我记得我大学学java的时候,怎么就是搞不明白这三种排序方法,也一直不会,现在我有发过来学习下这三种方法并记录下来. 首先说说冒泡排序方法:冒泡排序方法就是把数组中的每一个元素进行比较,如果第i个元素 ...

  8. MongoDB limit 选取 skip跳过 sort排序 方法

    MongoDB  limit 选取 skip跳过 sort排序 在mysql里有order by  MongoDB用sort代替order by > db.user.find() { " ...

  9. DataTable.DefaultView.Sort 排序方法

    今天在整合一个东西,需要用到DataTable的一个排序方法, 前我是将DataTable存到DataView里面的,所以刚开始就使用了DataView.Sort="ColumnName A ...

随机推荐

  1. servlet学习笔记_2

    一.Servlet线程安全问题1.servlet的线程安全问题.servlet引擎采用多线程的模式运行,它为并发的每个访问请求都预备一个线程来相应,但是由于只有一个servlet对象,因此,如果多个线 ...

  2. zend studio 10破解/汉化

    http://blog.csdn.net/qq1355541448/article/details/16807429

  3. viewPager + fragment

    有两种实现方式,一种是 fragmentActivity + FragmentPagerAdapter (Fragment,FragmentManager需要导包:android.support.v4 ...

  4. APP敏捷测试,测试和开发并行!

    测试和开发具有同等重要的作用,从一开始,测试和开发就是相向而行的.测试是开发团队的一支独立的.重要的支柱力量. 测试要具备独立性,独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具 ...

  5. error: Your local changes to the following files would be overwritten by checkout:

    在发布这个配置文件的时候,会发生代码冲突: error: Your local changes to the following files would be overwritten by merge ...

  6. webpack入门

    一,为什么用webpack 1.由于项目中资源的多样性和依赖性 2.js模块规范复杂化 3.开发与线上文件不一致性 二.webpack 特性 1.对CommonJS.AMD.ES6语法兼容 2.对js ...

  7. 03-方法ppt动手动脑问题及课后实验性问题总结

    一.如何不使用static来进行调用函数? 1.自己定义的不需要都是static,但是要在主函数中调用就需要static了,因为main是静态 的,在类加载时就加载了.如果想用又不加可以吧自己写的方法 ...

  8. Mat转换为QImage

    请留意: opencv为3.0.0版本,Qt为4.8.4版本 #include"image1.h" #include<QApplication> #include< ...

  9. T4模板批量生成代码

    大家通过比对下,就应该知道怎么玩. T4代码 <#@ template debug="false" hostspecific="true" languag ...

  10. how to get soul shields in blade and soul

    These soul shields can either be obtained by E.Fleet Supply Chain or Blackram Supply Chain (4-man or ...