JavaScript学习11 数组排序实例
数组声明
关于数组对象的声明,以前说过:
数组声明的一种方式:
var array = new Array();array.push(1);array.push(2);array.push(3);alert(array.length)
数组声明的第二种方式,并排序:
var array = [1, 3, 25];array.sort(); //对数组排序,默认升序alert(array); //结果显示:1,25,3
这是为什么呢?
数组的排序方法
对于JavaScript数组的sort方法来说,它会先将待排序的内容转换为字符串(调用toString()方法),按照字符串的先后顺序进行排序。
这是因为JS的数组是没有数据类型的,放什么类型的数据都行,所以排序方法必须为各种不同类型的元素找到一个统一的比较方法。
所以,跟Java一样,需要自定义比较方法(策略模式):
//首先定义一个比较函数:function compare(num1, num2){ var temp1 = parseInt(num1); var temp2 = parseInt(num2); if(temp1 < temp2) { return -1; } else if(temp1 == temp2) { return 0; } else { return 1; }}//然后调用这个比较方法进行排序var array = [1, 3, 25];array.sort(compare); //函数名是对象引用alert(array); //显示:1,3,25
使用匿名函数
上面的排序使用匿名函数的方式:
var array = [1, 3, 25];// 匿名函数array.sort(function(num1, num2){ var temp1 = parseInt(num1); var temp2 = parseInt(num2); if(temp1 < temp2) { return -1; } else if(temp1 == temp2) { return 0; } else { return 1; }});alert(array);
参考资料
圣思园张龙老师Java Web视频教程。
W3School JavaScript教程:
英文版: