js数组详解(四):排序API

本文深入讲解JavaScript中的排序方法,包括冒泡排序及数组sort()函数的使用技巧,自定义比较规则实现升序降序。同时,解析栈、队列及二维数组的概念与应用场景,如FILO和FIFO原则,以及如何通过普通数组模拟这些数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 排序: 
    自定义排序: 冒泡
    排序API: arr.sort();
       大问题: 默认将所有元素转为字符串再按字符串排列
                  只能对字符串类型的元素正确排序
       解决: 自定义比较规则: 
         比较器函数: 专门比较任意两值大小的函数: 
                   要求: 两个参数: a,b
                            返回值: 如果a>b,就返回正数
                                        如果a<b,就返回负数
                                        如果a=b,就返回0
         最简单的数字比较器函数: 
           function compare(a,b){return a-b;}
         如何使用: 将比较器函数名作为参数传入sort函数中
           arr.sort(compare) //强调: 不要加()
           compare函数作为参数传入sort中,被sort反复调用
         降序: 颠倒比较器函数的正负号,可改升序为降序
           最简单的数字降序比较器函数: 
              function compare(a,b){return b-a;}

2. 栈和队列: js中没有专门的栈和队列类型
                   一切栈和队列都是用普通数组模拟的
   栈: 一端封闭,只能从另一端进出的数组
    特点: FILO
   何时: 今后只要希望始终使用最新的元素时
   如何: 
      1. 从结尾出入栈: 
          入: arr.push(值) => arr[arr.length]=值
          出: var last=arr.pop()
          特点: 每次出入栈,都不影响其他元素的位置
      2. 从开头出入栈:
          入: arr.unshift(值)
          出: var first=arr.shift()
          特点: 每次出入栈,其它元素位置都会依次顺移
         
   队列: 只能从一端进入,从另一端出的数组
     特点: FIFO
   何时: 只要希望按先后顺序使用数组中的元素时
     1. 结尾入: 入: arr.push(值)
     2. 开头出: var first=arr.shift()
        
3. 二维数组: 
  什么是: 数组中的元素又引用了另一个子数组
  何时: 1. 保存横行竖列的二维数据结构
           2. 对一组数据,再进行细致分类时
  如何: 
     创建: 2种:
        1. 创建数组时,还不知道子数组的内容: 
            var arr=[];
            arr[0]=[值1,值2,...]; 
            arr[1]=[值1,值2,...];
        2. 创建数组同时初始化元素:
             var arr=[
                   [值1,值2,...],
                   [值1,值2,...],
                   ...
             ]
     访问: arr[r][c]->用法和普通数组元素的用法完全一样
         强调: 二维数组,行下标r不能越界!——报错!
     遍历: 外层循环控制行,内层循环控制列
        for(var r=0; r<arr.length; r++){//遍历每一行
            for(var c=0;c<arr[r].length;c++){//遍历第r行中每一列
               arr[r][c]//当前元素
            }
        }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值