<!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=utf-8" /> <title>无标题文档</title> <style type="text/css"> h3 { color:#09F; } </style> </head> <body> <h3>join() </h3> <script type="text/javascript"> var arr = new Array(); arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] ="App" document.write(‘arr ‘+arr); document.write("<br />"); document.write(‘join() ‘+arr.join()); document.write("<br />"); document.write(‘join(".") ‘+arr.join(".")); document.write("<br />"); document.write(‘sort() ‘+arr.sort()); document.write("<br />"); document.write(‘join() ‘+arr.join()); document.write("<br />"); document.write(‘join(".") ‘+arr.join(".")); document.write("<br />"); document.write(‘join("*") ‘+arr.join(".")); document.write("<br />"); </script> <p> </p> <h3>sort() </h3> <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 ‘ + arr ); document.write("<br />"); document.write("<br />"); document.write("从字面上对数组进行排序"); document.write("<br />"); document.write(‘sort() ‘+arr.sort()); document.write("<br />"); document.write("<br />"); //请注意,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数 document.write("从数值上对数组进行排序"); document.write("<br />"); document.write(‘sort(sortNumber) ‘+arr.sort(sortNumber)) document.write("<br />"); </script> </body> </html>
ps:难点——比较函数
1
2
3
4
5
6
|
function sortNumber(a, b) { return a - b } arr.sort(sortNumber) |
-------引用w3cschool http://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 的值。
-----摘自
http://bbs.csdn.net/topics/190034003
看过这个讨论,终于明白了这个问题--------
12345678910111213function sortNumber(a, b)
{
return a - b;
}
相当于
function sortNumber(a, b)
{
if (a>b)
return 正数;
else
return 非正数
}
Javascript数组 sort方法的分析
csdn博客 责任编辑:龙犊
javascript 中 Array.sort()方法是用来对数组项进行排序的 ,默认情况下是进行升序排列,实例代码如下:
var arrA = [6,2,4,3,5,1];
arrA.sort();
document.writeln(arrA);
//结果是:1,2,3,4,5,6
sort() 方法可以接受一个方法为参数 ,这个方法有两个参数。分别代表每次排序比较时的两个数组项。sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。
实例如下:
var arrA = [6,2,4,3,5,1];
/**//*arrA.sort();
document.writeln(arrA);
*/
function desc(x,y)
...{
if (x > y)
return -1;
if (x < y)
return 1;
}
function asc(x,y)
...{
if (x > y)
return 1;
if (x < y)
return -1;
}
arrA.sort(desc); // sort by desc
document.writeln(arrA);
document.writeln("<br>");
arrA.sort(asc); //sort by asc
document.writeln(arrA);
//输出结果:
6,5,4,3,2,1
1,2,3,4,5,6
另外,可以直接把一个无名函数直接放到sort()方法的调用中。如下的例子是将奇数排在前面,偶数排在后面,例子如下:
var arrA = [6,2,4,3,5,1];
arrA.sort( function(x, y) ...{
if (x % 2 ==0)
return 1;
if (x % 2 !=0)
return -1;
}
);
document.writeln(arrA);
//输出:1,5,3,4,6,2