数组中已经存在两个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数组的排序方法的更多相关文章

  1. JavaScript引用类型之Array数组的栈方法与队列方法

    一.栈方法 ECMAScript数组也提供了一种让数组的行为类似与其他数据结构的方法.具体的来说,数组可以变现的向栈一样,栈就是一种可以限制插入和删除向的数据结构.栈是一种LIFO(Last In F ...

  2. JavaScript引用类型之Array数组的拼接方法-concat()和截取方法-slice()

    1.concat()   基于当前数组中的所有项创建一个新数组(也就是副本),然后将接收到的参数添加到副本的末尾,最后返回新构建的数组.也就是说,concat()在向数组中追加元素时,不会改变原有数组 ...

  3. JavaScript引用类型之Array数组之强大的splice()方法

    splice()方法可以说是Array数组最强大的方法,他的用法很多,主要用法是向数组的中部插入项! 下面是它的用法: arrayObject.splice(index,howmany,element ...

  4. JavaScript引用类型之Array数组的toString()和valueof()方法的区别

    一.转换方法 1.在JavaScript中几乎所有对象都具有toLocaleString().toString和valueof()方法,因为,所有的对象都继承自Object,而前面所说的方法都是Obj ...

  5. JavaScript引用类型之Array数组的concat()和push()方法的区别

    在javascript中,我们一般都只用push向数组的尾部插入新元素的,但是其实在javascript中还有另外一个方法和push一样,也是向数组尾部插入新元素的,但是他们之间却存在着一定的区别,当 ...

  6. JavaScript高级编程——引用类型、Array数组使用、栈方法

    JavaScript高级编程——引用类型.Array数组使用.栈方法 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...

  7. 比较两种数组随机排序方法的效率 JavaScript版

    //比较2中数组随机排序方法的效率 JavaScript版 //randon1思路 //当len=5时候,从0-5中随机3一个放入i=0, // 从0-3随机一个2放入i=2 // 从0-2随机一个1 ...

  8. JavaScript高级编程——Array数组迭代(every()、filter()、foreach()、map()、some(),归并(reduce() 和reduceRight() ))

    JavaScript高级编程——Array数组迭代(every().filter().foreach().map().some(),归并(reduce() 和reduceRight() )) < ...

  9. JavaScript的json和Array及Array数组的使用方法

    1.关于json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.也可以称为数据集和数组类似,能够存数据! //Ar ...

随机推荐

  1. nginx-gridfs 的安装配置和使用

    (一)安装nginx前的准备 安装nginx需要安装openssl和pcre,具体安装步骤请参考nginx安装的相关博文 (二)nginx和nginx-gridfs 联合编译安装 nginx-grid ...

  2. Aix 光盘软件包安装

    1, mount -rv cdrfs /dev/cd0 /mnt (Aix 光盘挂载)2,fuser -kxcu /cdrom && unmount /mnt && u ...

  3. Struts 2.3.4.1完整示例

    [系统环境]Windows 7 Ultimate 64 Bit [开发环境]JDK1.6.21,Tomcat6.0.35,MyEclipse10 [其他环境]Struts2.3.4.1 [项目描述]S ...

  4. document.body.scrollTop与document.documentElement.scrollTop兼容

    这两天在写一个JS的网页右键菜单,在实现菜单定位的时候发现了这个问题:chrome居然不认识document.documentElement.scrollTop! 看前辈们的文章,纷纷表示如果有文档声 ...

  5. javascript时间处理方法收集

    首先收集到的是一个给某一个时间对象增加一段时间的方法, 例如2026-05-11增加一个月的时间,增加后时间为2026-05-11, 代码如下: function DateAdd(interval,n ...

  6. 两种Makefile

    .PHONY:clean CC=g++ CFLAGS=-Wall -g BIN=test_queue OBJS=Queue.o test_main.o $(BIN):$(OBJS) $(CC) $(C ...

  7. 【转】 LESS CSS 框架简介

    简介 CSS(层叠样式表)是一门历史悠久的标记性语言,同 HTML 一道,被广泛应用于万维网(World Wide Web)中.HTML 主要负责文档结构的定义,CSS 负责文档表现形式或样式的定义. ...

  8. bootstrap-js(3)滚动监听

    导航条实例 ScrollSpy插件根据滚动的位置自动更新导航条中相应的导航项. 拖动下面区域的滚动条,使其低于导航条的位置,注意观察active类的变化.下拉菜单中的子项也会跟着变为高亮状态. 1.调 ...

  9. Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置

    参考数据库链接串: <add key="data" value="server=192.168.1.123; Port=3306; uid=root; pwd=ro ...

  10. 用正则表达式替换内容 php

    以前做一个项目,就是有一个问答的页面,比如说在回答或者提问的内容中插入表情.写到内容里的是表情图片的名字(而且是不带后缀的,比如:f_002.png)表情包放在项目里,我需要在取除内容的时候将里面的表 ...