最详细的JS学习笔记(连载)第二章、数组方法(数组排序)

7、数组排序

(1)数组.sort()

数组排序(可以实现由大到小,默认:由小到大排序只限10以内),原有的数组也改变。

默认:按照首个字符的Unicode编码排序;如果第一个相同那么就比较第二个...

参数:无或有或函数        

返回值: 排序后的新数组                  原有数组改变

  var arr = [4,5,1,3,2,7,6];

  var aaa =arr.sort();

  console.log(aaa);     // [1, 2, 3, 4, 5, 6, 7]

  console.log(aaa === arr); // true 原数组被排序了(冒泡排序)

  //默认还可以排列字母;

  var arr2 = ["c","e","d","a","b"];

  var bbb = arr2.sort();

  console.log(bbb);     // ["a", "b", "c", "d", "e"]

  console.log(bbb===arr2); // true 原数组被排序了(冒泡排序)

10以上的排序

*** ary.sort(function(a,b){

return a-b

});  从小到大,10以上

*** ary.sort(function(a,b){

return b-a

});  从大到小,10以上

var ary = [9, 2, 13, 24, 5, 26, 37];

var res = ary.sort();    //这样直接写,只能处理10以内的数组排序

var res = ary.sort(function (a, b) {  // 处理10以上的数组排序

//a代表每一次循环的时候的当前项,b是后面的这个项。

//return  a-b 当前项减去后一项,如果大于0,代表前面的比后面的大,这样就交换位置。这种机制叫作冒泡排序。

return a - b;      //小-->大排序

return b - a;     //大-->小排序

});

sort( )底层原理

  var aaa = bubbleSort([1,12,3], function (a,b) {

// return a-b;      //实参:array[j]-array[j+1];

    return b-a;         //实参:array[j+1]-array[j];

  });

  console.log(aaa);

function bubbleSort(array,fn){

    //外循环控制轮数,内循环控制次数,都是元素个数-1;

    for(var i=0;i<array.length-1;i++){

      for(var j=0;j<array.length-1-i;j++){//次数优化,多比较一轮,少比较一次;

        //满足条件交换位置;

//        if(array[j]>array[j+1]){      //大于升幂排序;否则降幂;

        //a-b>0 和 a>b是一个意思;

        //b-a>0 和 a<b是一个意思;

//        if(array[j]-array[j+1]>0){//升幂排序

//        if(array[j+1]-array[j]>0){//降幂排序

        //把两个变量送到一个函数中;

        if(fn(array[j],array[j+1])>0){

          var temp = array[j];

          array[j] = array[j+1];

          array[j+1] = temp;

        }

      }

    }

    //返回数组

    return array;

  }

(2)数组.reverse() 

将数组倒过来排列(把原有数组的顺序倒过来),原有数组改变,返回数组地址

参数:无          

返回值: 数组地址                   原有数组改变

var ary=[1,2,3]; 

var res = ary.reverse()

console.log(res,ary);   //res=>[3,2,1]   ary=>[3,2,1]


本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记。有不正确之处请各位高手多多指点,一起学习进步。【VX:czlingyun    暗号:CSDN】

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵韵设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值