需求:使用随机数来打印出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. sublime-text3 3059基本配置

    1.下载安装官方版注册机语言包 参考安装: http://www.xiumu.org/note/sublime-text-3.shtml 2.插件 Package ControlConvertToUT ...

  2. Java开发基础

    天数 课程 01 Java基础回顾 集合 泛型 IO流 多线程 Junit Properties   HTML   JavaScript   JavaScript   BOM编程   XML基础   ...

  3. HTML5 十大新特性(七)——拖放API

    拖放API是H5专门为了鼠标拖放而新提供了7个事件,可以分成三个部分来讲. 一.拖动的源对象(source)可以触发的事件 dragstart:拖动开始 drag:拖动进行中 dragend:拖动结束 ...

  4. javascrpt事件

    1.HTML事件处理程序:就是事件直接写在HTML文档中,其特点就是HTML和Js紧密的结合在一起,缺点就是修改不方便,需要改动js和HTML两处.比如: <button onclick=&qu ...

  5. React-redux-webpack项目总结之用到的Es6基本语法

    地址:http://blog.csdn.net/lsgqjh/article/details/53454627 http://www.cnblogs.com/hujunzheng/p/6133648. ...

  6. hdu acm 简单暴力1004

    字符串匹配函数strcmp 直接使用来判断两字符串是否完全相等 用数组存每个单词的个数时  初始化为零就错 初始化为一时就正确  也不知道为什么

  7. centos 忘记密码

    装了个  centos 6.8  安装的时候 要输入 新用户和密码 用 新的用户密码 进去后 各种没权限  重新修改 root 密码   一切OK 步骤 1.重新启动Centos,在启动过程中,长按“ ...

  8. JS学习之事件流

    本文是原创文章,如需转载,请注明文章出处 JS和AS师出同源,所以事件流的3个阶段也跟AS一样,分别是捕获阶段,目标阶段,冒泡阶段. 下面写了个例子可以清晰的看出事件流的顺序: eventTest.h ...

  9. django学习记录--第一个网页“hello django”

    一.安装django 下面两种方法任选其一 1.pip或easy_install 安装 pip install django easy_install django 2.到django官网(https ...

  10. php empty,isset,is_null比较(差异与异同)

    php empty,isset,is_null比较(差异与异同)  http://www.cnblogs.com/chengmo/archive/2010/10/18/1854258.html