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

数组排序方法——reverse() 和 sort() !! sort( ) 参数浅析

时间:2018-01-13 00:26:04      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:compare   高级程序设计   .so   bsp   var   个数   lan   color   fun   

sort( )  和  reverse( )  , 前者默认升序,后者反转数组原来的顺序。

sort( )  执行后会调用每个数组元素的toString( )方法,然后对得到的字符串进行排序。所以出现以下问题:

 

var values = [ 1, 2, 15, 5, 12]
values.sort()
//输出  0, 1, 12, 15 , 5

  

因此,sort( )接受一个比较函数作为参数来进行排序。

比较函数接受两个参数。这两个参数遵循一个法则:如果第一个参数应该排在第二个之前则返回一个负数,如果第一个参数应该排在第二个之后则返回一个正数,如果两个参数相等则返回0。

 

function compare(val1, val2){
  if (val1 < val2){
    return -1
  }else if(val1 > val2){
    return 1
  }else{
    return 0
  }
}

var values = [ 1, 15, 5, 12]
values.sort(compare);
//输出  1, 5, 12, 15

  

运行过程如下:

//根据冒泡排序来进行升序:  第一个小于第二个,则第一个排在第二个前面,位置不变。这里依照上面的法则,return  -1
//运行第一次
if(1 < 15){
  return -1
}
//得到排序结果 [1, 15, 5, 12]

//冒牌排序: 第一个大于第二个,则第一个排在第二个后面,位置对换。这里依照上面的法则,retrun 1
//运行第二次
if(15 > 5){
return 1
}
//得到排序结果 [1, 5, 15, 12]

//运行第三次,同理得到最终结果 [1, 5, 12, 15]

  

同理需要降序的时候:

if(val1 < val2){
  return 1
}else if(val1 > val2){
  return -1
}

 

简洁写法:

function compare(val1, val2){
  return val1 - val2
}

var values = [ 1, 15, 5, 12]
values.sort(compare);
//输出  1, 5, 12, 15

  

如果实在理解不了,还是直接记住简洁写法的好。。。。。

 

参考资料:

《JavaScript高级程序设计》P92,P93

MDN: Array.prototype.sort()

 

数组排序方法——reverse() 和 sort() !! sort( ) 参数浅析

标签:compare   高级程序设计   .so   bsp   var   个数   lan   color   fun   

原文地址:https://www.cnblogs.com/ly0612/p/8277976.html

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