Javascript数组的排序 sort()方法和reverse()方法
来源:互联网 发布:原生js手风琴效果 编辑:程序博客网 时间:2024/05/16 07:20
原文:http://www.jb51.net/article/30491.htm
JavaScript提供了sort()方法和reverse()方法,使得我们可以简单的对数组进行排序操作和逆序操作
其中:
1.JavaScript的sort()中如果没有指定比较函数,则默认会按照字符的编码顺序进行升序排序。也就是说如果我们想要对数值进行排序得到的不一定是我们想要的结果。
2.Javascript的reverse()将数组中的元素逆序。
先看看上面的第一点,如果有一个数组arr=[1,6,3,7,9],使用arr.sort()后,数组的顺序为1,3,6,7,9,得到了我们想要的结果。
再看看下面的一个数组排序:arr=[3,1,16,34,30],如果执行arr.sort()后是不是还是会得到我们想要的1,3,16,30,34呢?
执行后我们发现结果为:1,16,3,30,34,显然结果不是我们想要的。实际上,sort方法将上面的数值按照字符串方式排序了,也就是说和数组arr1=[‘3’,’1’,’16’,’34’,’30’]的排序结果一致。
代码如下:
var arr=[3,1,16,34,30];var arr1=['3','1','16','34','30'];alert(arr.sort()); // 1,16,3,30,34alert(arr1.sort()); // 1,16,3,30,34
那么如果我们想要得到正确的结果:1,3,16,30,34 应该怎么去做呢?
查询javascript手册,手册中的说明如下:
定义和用法
sort() 方法用于对数组的元素进行排序。
语法
arrayObject.sort(sortby)参数 描述
sortby 可选。规定排序顺序。必须是函数。
返回值
对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
说明
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
由以上说明我们可以了解到,如果要按照数值进行排序,那么就要提供一个比较函数。一般常见的比较函数如下:
function sortArr(m,n){ if(m<n) return -1;//小于,返回-1 else if(m>n) return 1;//大于,返回1 else return 0;//等于,返回0}
精简后可以写成如下两种形式:
function sortArr(m,n){ return m-n;}
function sortArr(m,n){ return m>n?1:(m<n?-1:0);}
然后执行arr.sort(sortArr),发现可以得到我们想要的结果:1,3,16,30,34.也就说将数组按照整型数值进行了升序排序。
这样的话新的问题就来了,如果我们想要对数组进行降序排序怎么做呢?
有一思路就是改变sortArr函数的返回值,如果m
arr.sort(sortArr).reverse();
总结:这里主要介绍了Javascript中数组的排序,由于默认按照字符串排序,要实现按照其他形式的规则排序就要自己定义比较函数了。
- Javascript数组的排序 sort()方法和reverse()方法
- Javascript数组的排序 sort()方法和reverse()方法
- JavaScript数组的reverse和sort方法
- js数组排序 reverse()和sort()方法的使用,
- js数组排序 reverse()和sort()方法的使用 复制数组slice()和克隆数组concat()
- javascript 数组排序函数sort和reverse
- 分针网—每日分享:JavaScript学习笔记:数组的sort()和reverse()方法
- javascript 数组排序sort方法和自我实现排序方法的学习小结 by FungLeo
- 数组方法之----reverse() 和 sort()
- javascript中数组排序方法sort()用法
- 数组排序方法sort()
- Javascript数组(array) sort方法的解释和分析
- 数组的排序方法 sort()
- javascript中数组的sort()方法
- 小结重排序方法reverse()、sort()
- javascript数组(1) ——sort的工作原理及其他数组排序方法
- JavaScript数组的排序方法
- JavaScript 使用sort()方法来给数组排序
- 对象中的constructor
- 这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)
- UVA
- 方差、标准差、均方差、均方误差区别总结
- 【Machine Learning】【Python】四、Hard Negative Mining优化训练SVM模型 ---- 《SVM物体分类和定位检测》
- Javascript数组的排序 sort()方法和reverse()方法
- hibernate的QBE和QBC
- 为体验设计——使用第一
- UVA10391 ZOJ1825 Compound Words【SET+暴力】
- JSON详解
- 用户体验和网站
- 小知识整理
- JDBC入门
- 树莓派意外删除.profile 文件