<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,Chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="renderer" content="webkit">
<title>Array.sort</title>
</head>
<body>
<script>
//很多人不清楚数组排序的具体原理.
var arr=[1,2,3,4,5,10,20,30,40];
console.log(arr.sort()); //[1, 10, 2, 20, 3, 30, 4, 40, 5]
//如果sort就提供我们这样一个排序功能,那不要也罢.
//实际上,sort默认是把数组的每一项转换成字符串,再进行排序的.
//所以,只看排序后数组中每一项的第一位的话,你发现它干的不错.
//但是我们要告诉它,按照我们的规则排序,也就是从小到大排序.
//sort方法可以接受一个函数作为参数,这个函数就是我们告诉javascript数组排序的规则.
arr.sort(function(value1,value2){
if(value1<value2){
return -1;
} else if(value1>value2){
return 1;
}else{
return 0;
}
});
console.log(arr);//[1, 2, 3, 4, 5, 10, 20, 30, 40]
//很多人迷惑了.其实只要习惯就好,这就是javascript的一个规则.或者说sort判断排序的一个规则.
//两个参数value1 和 value2 分别代表数组中传入的每一项. value1 代表前一项,value2 代表后一项.
//如果前一项 < 后一项 返回-1,否则返回1;这是什么意思呢?
//如果你想太多了,就赶紧打住.
//我是这样理解的:
//如果我希望数组从小到大排序.那么我把数组的前一项和后一项作为参数传入比较函数中.
//函数判断我传入的两个参数.如果第一项比第二项小,那么说明这两项已经是从小到大排序了.不需要再排了,返回-1(相当于标记了不需要排序的数)
//如果第一项比第二项大,那么这两项需要进行排序,返回1(相当于true);
//如果两项相等,返回0.(相当于false),不需要排序.
//就这么简单.如果想知道更深层次的东西,就不是这里能学到的了.
//现在我想从大到小排列:
arr.sort(function(value1,value2){
if(value1<value2){
//我希望数组从大到小排序,前一项应该大于后一项,所以这个if()的条件,不符合我期望的数组中的规则,需要排序,返回1(正数)
return 1;
}else if(value1>value2){
//符合我期望的数组中的规则,不需要排序,返回-1(负数)
return -1;
}else{
//相等,不需要排序,返回0
return 0;
}
});
console.log(arr);//[40, 30, 20, 10, 5, 4, 3, 2, 1]
//完毕
//基于幻想的理解并不算是理解,要想真正理解sort,还需要查看语言核心中的具体实现.
</script>
</body>
</html>

javascript 数组排序之 sort()的更多相关文章

  1. 谈谈javascript数组排序方法sort()的使用,重点介绍参数使用及内部机制?

    语法:arrayObject.sort(sortby) 参数sortby可选,规定排序顺序,必须是函数: 注:如果调用该方法时没有使用参数,将按字符编码的顺序进行排序,要实现这一点,首先应把数组的元素 ...

  2. JS面试Q&A(续):Javascript数组排序, 默认是字符串Unicode排序, 不适合数字

    Q:下面代码段的执行后data里面的数据是什么?为什么? var data= [40,1,5,200] data.sort(); A: data的内容是[1, 200, 40, 5] 因为,Javas ...

  3. Javascript Array对象 sort()方法,记忆方法,方法扩展

    相信 有很多 同仁们,尤其是初学者,在记住 Array对象 sort() 方法的排序,规则上,有点困难: 其实sort()方法已经在实际工作中用到很多遍了,可当我仔细推敲,这个sort()方法,什么时 ...

  4. 【JavaScript排序】 sort()方法(解决null、undefined、0之间的排序(混乱)问题)

    JavaScript排序 - sort()方法 --解决null.undefined.0之间的排序(混乱)问题 一.普通的数组排序 ​ JavaScript中用方法sort()为数组排序.sort() ...

  5. JavaScript深入理解sort()方法

    一. 基本用法 let arr1 = [3, 5, 7, 1, 8, 7, 10, 20, 19] console.log(arr1.sort()) // [1, 10, 19, 20, 3, 5, ...

  6. Js数组排序函数sort()

    JS实现多维数组和对象数组排序,用的其实就是原生sort()函数,语法为:arrayObject.sort(sortby)(sortby 可选.规定排序顺序.必须是函数.) 返回值为对数组的引用:请注 ...

  7. JS中的数组排序函数sort()

    JavaScript实现多维数组.对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序. sort() 方法用于对数组的元素进行排序.语法如下: arrayObject.sort ...

  8. JavaScript 中数组 sort() 方法的基本使用

    在日常的代码开发中,关于数组排序的操作可不少,JavaScript 中可以调用 sort 方法对数组进行快速排序. 今天,就数组的 sort 方法来学习一下,避免日后踩坑的悲惨遭遇. 概念 sort ...

  9. 模拟javascript中的sort排序

    一.javascript中sort对数据进行排序的原理 sort() 方法对数组的元素做原地的排序,并返回这个数组. sort 可能不是稳定的.默认按照字符串的Unicode码位点排序; 语法:arr ...

随机推荐

  1. extjs中grid对于其中表单的表头的读取以及是否隐藏的判断

    //获取grid的表头信息 var columns=baseGrid.columns;                     alert(columns.length); //判断列是否隐藏并输出表 ...

  2. 百度地图开发之poi检索,线路规划

      官方文档 http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key 先去官方文档申请秘钥下载压缩文件等操作,参考 百度地图的秘钥申请 ...

  3. seajs第二节,seajs各模块依赖关系

    index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  4. 剑指Offer05 用栈模拟队列

    添加了模板类应用 /************************************************************************* > File Name: ...

  5. 剑指Offer42 左旋字符串

    /************************************************************************* > File Name: 42_LeftRo ...

  6. ARM嵌入式整理

    填空 1指令含义 列出文件列表的ls命令 切换目录的cd命令 创建目录的mkdir命令 删除目录的rmdir命令 复制文件的cp命令 删除文件或目录的rm命令 让显示画面暂停的more命令 连接文件的 ...

  7. 【转】同一台机器部署两个jboss方法

    更改jboss的端口信息 1) 更改webservic的端口信息D:\jboss-new\server\default\conf\jboss-service.xml文件 <mbean code= ...

  8. JS 数组乱序

    因为不想在后台操作,就使用js进行 涉及到了一个打乱数组顺序的方法 百度到的一篇 Author : Jun.lu http://www.cnblogs.com/idche/archive/2010/0 ...

  9. javascript事件代理(委托)

    之前有接触过事件代理,但是印象并不深刻.这次记下来加强印象. 用个大家比较常见的代码举例子: html dom结构: <ul id="ul1"> <li>0 ...

  10. HTML5_注册表单的自动聚焦与占位文本

    首先看下面要使用HTML自动聚焦和占位文本的示例代码 1: <!DOCTYPE html> 2: <html> 3: <head> 4: <title> ...