JavaScript中的排序函数sort

来源:互联网 发布:请你列举三个机构域名 编辑:程序博客网 时间:2024/04/30 19:40
 

sort 方法
返回一个元素已经进行了排序的 Array 对象。

arrayobj.sort(sortfunction)

参数
arrayObj

必选项。任意 Array 对象。

sortFunction

可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

说明
sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

1.负值,如果所传递的第一个参数比第二个参数小。

2.零,如果两个参数相等。

3.正值,如果第一个参数比第二个参数大。

示例

下面这个例子说明了 sort 方法的用法:

以下是代码片段:
function SortDemo() {
var a, l; // 声明变量。
a = new Array("X" ,"y" ,"d", "Z", "v","m","r");
l = a.sort(); // 排序数组。
return(l); // 返回排序的数组。
}

Demo(数字排序,sort(prama)方法带参数):

以下是代码片段:
<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>

结果:
1
2
4
5
12
23
23
34

Demo2(Demo反排序):

以下是代码片段:
<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>

结果:
34
23
23
12
5
4
2
1

 

===========================================================================

 

测试文档:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title></title>
</head>

<body>

<script>
var arr=[200,20,34,43,210,56,89];
//arr.sort();
for(i=0;i<arr.length;i++){
 document.write(arr[i]+"<br>");
}
document.write("=========================<br>");
arr.sort();
for(i=0;i<arr.length;i++){
 document.write(arr[i]+"<br>");
}

var temp;// 临时变量
for(i = arr.length - 1; i > 0; i--) {
 for(var j = 0; j <= i - 1; j++)
 {
  if(arr[j] > arr[j + 1]) {
   temp = arr[j];
   arr[j] = arr[j + 1];
   arr[j + 1] = temp;
  }
 }
}

document.write("=========================<br>");

// 输出结果
for(var k = 0; k < arr.length; k++) {
document.write(arr[k] + "<br>");
}

document.write("=========================<br>");

// 输出结果
for(var k = arr.length-1; k >=0 ; k--) {
document.write(arr[k] + "<br>");
}

</script>
<script>
document.write("=========================<br>");

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>
document.write("=========================<br>");

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>
</body>
</html>

 

===================================================================

一个学习的地方:

JavaScript sort() 方法 http://www.w3school.com.cn/js/jsref_sort.asp

定义和用法

sort() 方法用于对数组的元素进行排序。

语法

arrayObject.sort(sortby)
参数描述
sortby可选。规定排序顺序。必须是函数。

返回值

对数组的引用。请注意,数组在原数组上进行排序,不生成副本。

说明

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

  • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。

提示和注释

注释:您可使用负值从数组的尾部选取元素。

注释:如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。

实例

例子 1

在本例中,我们将创建一个数组,并按字母顺序进行排序:

<script type="text/javascript">var arr = new Array(6)arr[0] = "George"arr[1] = "John"arr[2] = "Thomas"arr[3] = "James"arr[4] = "Adrew"arr[5] = "Martin"document.write(arr + "<br />")document.write(arr.sort())</script>

输出:

George,John,Thomas,James,Adrew,MartinAdrew,George,James,John,Martin,Thomas

例子 2

在本例中,我们将创建一个数组,并按字母顺序进行排序:

<script type="text/javascript">var arr = new Array(6)arr[0] = "10"arr[1] = "5"arr[2] = "40"arr[3] = "25"arr[4] = "1000"arr[5] = "1"document.write(arr + "<br />")document.write(arr.sort())</script>

输出:

10,5,40,25,1000,11,10,1000,25,40,5

请注意,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:

<script type="text/javascript">function sortNumber(a,b){return a - b}var arr = new Array(6)arr[0] = "10"arr[1] = "5"arr[2] = "40"arr[3] = "25"arr[4] = "1000"arr[5] = "1"document.write(arr + "<br />")document.write(arr.sort(sortNumber))</script>

输出:

10,5,40,25,1000,11,5,10,25,40,1000

TIY

sort() 按字母顺序
如何使用 sort() 按照字母顺序对数组进行排序。
sort() 按数值顺序
如何使用 sort() 按照数值顺序对数组进行排序。
原创粉丝点击