javascript 数组排序之 sort()
<!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()的更多相关文章
- 谈谈javascript数组排序方法sort()的使用,重点介绍参数使用及内部机制?
语法:arrayObject.sort(sortby) 参数sortby可选,规定排序顺序,必须是函数: 注:如果调用该方法时没有使用参数,将按字符编码的顺序进行排序,要实现这一点,首先应把数组的元素 ...
- JS面试Q&A(续):Javascript数组排序, 默认是字符串Unicode排序, 不适合数字
Q:下面代码段的执行后data里面的数据是什么?为什么? var data= [40,1,5,200] data.sort(); A: data的内容是[1, 200, 40, 5] 因为,Javas ...
- Javascript Array对象 sort()方法,记忆方法,方法扩展
相信 有很多 同仁们,尤其是初学者,在记住 Array对象 sort() 方法的排序,规则上,有点困难: 其实sort()方法已经在实际工作中用到很多遍了,可当我仔细推敲,这个sort()方法,什么时 ...
- 【JavaScript排序】 sort()方法(解决null、undefined、0之间的排序(混乱)问题)
JavaScript排序 - sort()方法 --解决null.undefined.0之间的排序(混乱)问题 一.普通的数组排序 JavaScript中用方法sort()为数组排序.sort() ...
- JavaScript深入理解sort()方法
一. 基本用法 let arr1 = [3, 5, 7, 1, 8, 7, 10, 20, 19] console.log(arr1.sort()) // [1, 10, 19, 20, 3, 5, ...
- Js数组排序函数sort()
JS实现多维数组和对象数组排序,用的其实就是原生sort()函数,语法为:arrayObject.sort(sortby)(sortby 可选.规定排序顺序.必须是函数.) 返回值为对数组的引用:请注 ...
- JS中的数组排序函数sort()
JavaScript实现多维数组.对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序. sort() 方法用于对数组的元素进行排序.语法如下: arrayObject.sort ...
- JavaScript 中数组 sort() 方法的基本使用
在日常的代码开发中,关于数组排序的操作可不少,JavaScript 中可以调用 sort 方法对数组进行快速排序. 今天,就数组的 sort 方法来学习一下,避免日后踩坑的悲惨遭遇. 概念 sort ...
- 模拟javascript中的sort排序
一.javascript中sort对数据进行排序的原理 sort() 方法对数组的元素做原地的排序,并返回这个数组. sort 可能不是稳定的.默认按照字符串的Unicode码位点排序; 语法:arr ...
随机推荐
- PHP实现无级递归分类(ThinkPHP框架)
/** * 无级递归分类 * @param int $assortPid 要查询分类的父级id * @param mixed $tag 上下级分类之间的分隔符 * @return string $tr ...
- java操作xml的一个小例子
最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...
- sql 将某一列的值拼接成字符串
) set @str='' -- 必须先赋值 ))+',' from( select [objid],sfrq from tablename ) tb order by tb.sfrq print @ ...
- Flask Restful Small Demo
参考: http://www.pythondoc.com/flask-restful/first.html 什么是Rest Client-Server:服务器端与客户端分离. Stateless(无状 ...
- IE10 下兼容性问题
昨天在IE10下遇到这样一个问题 用jquery 获取textarea里的值 其中内容这里包含HTML 用$("#Id").val().$("#Id").ht ...
- ubuntu安装python3
系统本身就已经安装了python2.7 和python3.4 现在需要做的就是将默认的版本更换一下下就可以了. 检查python的版本 python -V 老的版本没必要去产出了,因为会有一些程序依赖 ...
- iOS开发那些事-iOS应用本地化-文本信息本地化
文本信息本地化在本地化工作中占有很大的比例.包括了:应用名称本地化.系统按钮和信息本地化,以及静态文本信息本地化. 系统按钮和信息本地化 还记得天气预报应用背后的“完成”按钮吗,它在中文环境下是“完成 ...
- python基础:day3作业
修改haproxy配置文件 基本功能:1.获取记录2.添加记录3.删除记录 代码结构:三个函数一个主函数 知识点:1.python简单数据结构的使用:列表.字典等 2.python两个模块的使用:os ...
- python简单爬虫编写
1.主要学习这程序的编写思路 a.读取解释网站 b.找到相关页 c.找到图片链接的元素 d.保存图片到文件夹 ..... 将每一个步骤都分解出来,然后用函数去实现,代码易读性高. ##代码尽快运行时会 ...
- mysql 存储过程详解 存储过程
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成 ...