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 ...
随机推荐
- 从源码的角度分析ViewGruop的事件分发
从源码的角度分析ViewGruop的事件分发. 首先我们来探讨一下,什么是ViewGroup?它和普通的View有什么区别? 顾名思义,ViewGroup就是一组View的集合,它包含很多的子View ...
- extjs采用fileupload进行文件上传后台实现
前台js: form: Ext.define("GS.base.BasicImportForm",{ extend:"Ext.form.Panel", ...
- UITabbar的简单操作和实际应用
简易编辑Tabbar //**标签栏控制器的初始化 UITabBarController * tabbarC = [[UITabBarController alloc] init]; //设置tab ...
- 【Amazon Linux】免费搭建subversion服务器
Amazon的EC2服务器可以免费试用一年.在这里申请: https://aws.amazon.com/cn/free/ 尝试把它弄成一个svn库来保存代码.按照 http://northwaygam ...
- HDU 1087 Super Jumping! Jumping! Jumping! (DP)
C - Super Jumping! Jumping! Jumping! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format: ...
- 查看Eclipse32位还是64位以及Eclipse的编译版本号,查看JDK是32位还是64位
一.查看Eclipse是32位还是64位 首先进入到Eclipse的安装目录: 查找到文件名为"eclipse.ini" 文件,使用文本编辑工具,或记事本打开,如下图: 以上是查看 ...
- Linux之apt-get无sudo权限安装软件
apt-get source package cd package ./configure --prefix=$HOME make make install
- Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图
标签: Android百度地图API Key 分类: Android 百度地图开发(2) 最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...
- iOS - 移动设备防丢失App
一.原理 二.数据获取 三.报警
- 初识iOS9 iPad新特性SlideView和SplitView的适配
苹果刚发布了iOS9,在iPad上新增了两个新的特性SlideView和SplitView,前者可以在不关闭当前激活APP的情况下调出来另外个APP以30%比例显示进行操作使用,后者允许同时运行两个A ...