<!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. TFS 2010 使用手册(四)备份与恢复

    本文参考了http://developer.51cto.com/art/201010/229066.htm的文章. TFS的备份与恢复一直没有很完整的解决方案,要完成一个很好的备份要有很多的手动步骤才 ...

  2. Android小项目之九 两种上下文的区别

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  3. PreparedStatement和Statement的区别

    转自:http://blog.sina.com.cn/s/blog_77eba18f01019csh.html 1. PreparedStatement接口继承Statement, PreparedS ...

  4. CentOS7,Firewalld防火墙使用方法

    查看防火墙状态 systemctl status firewalld.service 启动firewall systemctl stop firewalld.service 停止firewall sy ...

  5. 如何使用 SQL Developer 导出数据

    完成此方法文档后,您应该能够了解: 如何使用 SQL Developer 将数据导出为各种文件格式 如何导出模式中的对象定义 目录 1. 简介 2. 软件要求 3. 导出数据 4. 导出对象定义 5. ...

  6. ARM嵌入式整理

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

  7. JQ笔记

    参数形式$("input:text",document.forms[0])选择form[0]所有input=text$("<p>123</p>&q ...

  8. java之旅——JDK版本下载

    作为一名IT工作者,技术学无止境,最近开始学习java. 学习java就需要安装jdk,直接到官网上下载,总是找不到很好的版本,在资源中找到一个下载jdk的链接,想下载哪个版本都有. http://w ...

  9. C#实现在CAD图纸中插入另一个DWG图块的代码

    C#实现在CAD图纸中插入另一个DWG图块的代码 PromptPointResult ppr = ed.GetPoint("请选择插入点:"); Point3d pt = ppr. ...

  10. .NET程序编译和运行

    一次面试的时候遇到的一道题目,简要说明.NET的编译过程,在网上看了很多资料,简单总结如下: 1.一般的编译过程 通常高级语言的程序编译过程是:首先写好的程序是源代码,然后编译器编译为本地机器语言,最 ...