JavaScript引用类型之Array数组的排序方法
数组中已经存在两个JavaScript给我们定义好的重排序的方法:reverse()和sort()方法,下面来简单分析下:
1、reverse() 用于反转数组项的顺序,代码如下:
<script>
var colors=[1,2,3,4,5];
colors.reverse();
alert(colors.toString()); //输出:5,4,3,2,1
</script>
这里数组的初始顺序是1、2、3、4、5,调用数组的reverse()方法后,其值顺序变为5、4、3、2、1
2、sort()
用法:arrayobj.sort(sortfunction)
参数说明:
(1)arrayObj 必选项,任意 Array 实例。
(2)sortFunction 可选项,是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。
注意:sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。
如果为 sortfunction 参数提供了一个函数,那么该函数必须为下列返回值之一:
负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。
没有给sort()方法指定排序规则的代码如下:
<script>
//使用方法:arrayobj.sort(sortfunction)
var colors=["张三","李四","王五",6,"stephen curry","Kevin Durant"];
colors.sort(); //没有给sort()方法传递排序方法sortfunction。所以sort()方法会将colors数组里面的每一项调用toString()方法,然后对所有的数组项进行ASCII码值比较,
//返回排序后的结果,最左边的是ASCII值最小的数组项,最右边的是ASCII最大的数组项
alert(colors.toString()); //输出:6,Kevin Durant,stephen curry,张三,李四,王五
</script>
给sort()方法指定排序规则 代码如下:
<script>
//使用方法:arrayobj.sort(sortfunction)
var arr=[6,1,7,3,6,5];
arr.sort(compare);
alert(arr.toString()); //输出:1,3,5,6,6,7
//排序规则
function compare(value1,value2) {
if(value1>value2){
return 1;
}
else if(value1<value2){
return -1;
}
else{
return 0;
}
}
</script>
上面只是一种写法,而且个人认为不是很好,下面是其他的写法:
<script>
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(function compare(a,b){return a-b;});
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
}
</script>
降序排序
<script>
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(function compare(a,b){return b-a;});
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
}
<script>
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(new Function("a","b","return a-b;"));
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
}
</script>
<script>
function compare(a,b) {
return a-b;
}
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(compare);
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
}
</script>
<script>
var compare = function(a,b) {
return a-b;
}
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(compare);
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
}
</script>
写法有很多,所以喜欢那种就用哪种吧!
现在学会了sort的用法,下面就用它实现数组的升序和降序方法,并封装一下,代码如下:
/*
@param arr ---需要排序的数组
@return ---返回值为排序完的数组
功能:对数组进行升序排序
*/
function asc(arr){
arr.sort(function(a,b){
return a-b;
});
return arr;
} /*
@param arr ---需要排序的数组
@return ---返回值为排序完的数组
功能:对数组进行降序排序
*/
function desc(arr){
arr.sort(function(a,b){
return b-a;
});
return arr;
}
学以致用,亘古不变的真理!
JavaScript引用类型之Array数组的排序方法的更多相关文章
- JavaScript引用类型之Array数组的栈方法与队列方法
一.栈方法 ECMAScript数组也提供了一种让数组的行为类似与其他数据结构的方法.具体的来说,数组可以变现的向栈一样,栈就是一种可以限制插入和删除向的数据结构.栈是一种LIFO(Last In F ...
- JavaScript引用类型之Array数组的拼接方法-concat()和截取方法-slice()
1.concat() 基于当前数组中的所有项创建一个新数组(也就是副本),然后将接收到的参数添加到副本的末尾,最后返回新构建的数组.也就是说,concat()在向数组中追加元素时,不会改变原有数组 ...
- JavaScript引用类型之Array数组之强大的splice()方法
splice()方法可以说是Array数组最强大的方法,他的用法很多,主要用法是向数组的中部插入项! 下面是它的用法: arrayObject.splice(index,howmany,element ...
- JavaScript引用类型之Array数组的toString()和valueof()方法的区别
一.转换方法 1.在JavaScript中几乎所有对象都具有toLocaleString().toString和valueof()方法,因为,所有的对象都继承自Object,而前面所说的方法都是Obj ...
- JavaScript引用类型之Array数组的concat()和push()方法的区别
在javascript中,我们一般都只用push向数组的尾部插入新元素的,但是其实在javascript中还有另外一个方法和push一样,也是向数组尾部插入新元素的,但是他们之间却存在着一定的区别,当 ...
- JavaScript高级编程——引用类型、Array数组使用、栈方法
JavaScript高级编程——引用类型.Array数组使用.栈方法 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...
- 比较两种数组随机排序方法的效率 JavaScript版
//比较2中数组随机排序方法的效率 JavaScript版 //randon1思路 //当len=5时候,从0-5中随机3一个放入i=0, // 从0-3随机一个2放入i=2 // 从0-2随机一个1 ...
- JavaScript高级编程——Array数组迭代(every()、filter()、foreach()、map()、some(),归并(reduce() 和reduceRight() ))
JavaScript高级编程——Array数组迭代(every().filter().foreach().map().some(),归并(reduce() 和reduceRight() )) < ...
- JavaScript的json和Array及Array数组的使用方法
1.关于json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.也可以称为数据集和数组类似,能够存数据! //Ar ...
随机推荐
- C语言入门(17)——C语言数组应用的一个实例
本篇通过一个实例介绍使用数组的一些基本模式.问题是这样的:首先生成一列0-9的随机数保存在数组中,然后统计其中每个数字出现的次数并打印,检查这些数字的随机性如何.随机数在某些场合(例如游戏程序)中是非 ...
- nginx-gridfs 的安装配置和使用
(一)安装nginx前的准备 安装nginx需要安装openssl和pcre,具体安装步骤请参考nginx安装的相关博文 (二)nginx和nginx-gridfs 联合编译安装 nginx-grid ...
- click through rate prediction
包括内容如下图: 使用直接估计法,置信区间置信率的估计: 1.使用二项分布直接估计 $p(0.04<\hat{p}<0.06) = \sum_{0.04n\leq k \leq 0.06n ...
- Love Hotels and Unicode[转]
原文地址:http://www.reigndesign.com/blog/love-hotels-and-unicode/ 讲得挺通俗的一篇文章 On Sunday 28 October I atte ...
- C#.net连接SQLite及遇到的问题
1.Slite简介 SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需 ...
- Javascript数组中shift()和push(),unshift()和pop()操作方法使用
Javascript为数组专门提供了push和pop()方法,以便实现类似栈的行为.来看下面的例子: var colors=new Array(); //创建一个数组 var count= ...
- 《Microsoft SQL Server企业级平台管理实践》笔记
- 页是 SQL Server 中数据存储的基本单位,大小为 8KB. - 区是空间管理的基本单位,8个物理上连续的页的集合(64KB). - 页的类型包括: 1. Data 2. Index 3. ...
- hibernate总结四
HIbernate-查询语句 Hibernate Query Language (HQL) 是一个面向对象的查询语言,与Sql相似, 相对于sql对表和列的操作, HQL是对持久对象和他们的属性进行操 ...
- return break continue 的区别
1)break 直接跳出当前的循环,从当前循环外面开始执行,忽略循环体中任何其他语句和循环条件测试.他只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来 ...
- JAVA日期字符串转化,日期加减
SimpleDateFormat函数语法: G 年代标志符 y 年 M 月 d 日 h 时 在上午或下午 (1~12) H 时 在一天中 (0~23) m 分 s 秒 S 毫秒 E ...