码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript学习11 数组排序实例

时间:2015-10-24 12:46:54      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

JavaScript学习11 数组排序实例

 

数组声明

  关于数组对象的声明,以前说过:http://www.cnblogs.com/mengdd/p/3680649.html

  数组声明的一种方式:

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教程:http://www.w3school.com.cn/js/index.asp

  英文版:http://www.w3schools.com/js/default.asp

JavaScript学习11 数组排序实例

标签:

原文地址:http://www.cnblogs.com/liu-Gray/p/4821104.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!