首页 > 其他分享 >js数组详解(四):排序API

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

时间:2023-04-03 11:32:28浏览次数:39  
标签:sort ... arr 元素 js API 数组 var 详解


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]//当前元素
             }
         }

标签:sort,...,arr,元素,js,API,数组,var,详解
From: https://blog.51cto.com/u_16000296/6165880

相关文章

  • 教你如何通过CodeArts IDE插件调用API,高效合成语音
    摘要:本实验基于华为云自研CodeArtsIDE,指导用户通过使用华为云API,来实现一个文字合成语音的应用。本文分享自华为云社区《通过CodeArtsIDE插件调用API,高效合成语音!》,作者:华为云PaaS服务小智。实验内容:CodeArtsIDE定位华为云开发者桌面,是利用华为自研IDE内核技术,面向华为云开......
  • layui和vue.js和jq一起使用调用vue方法及变量
    <divclass="layui-rowlayui-col-space15"id="app"></div>定义vueApp:letvueApprequire(['vue'],function(Vue){vueApp=newVue({el:"#app",data:{where......
  • 【妙用WebView】鸿蒙元服务中如何使用Java Script的API创建地图
    【关键字】webview地图高德腾讯地图百度地图 【问题背景】开发元服务过程中需要用到地图能力:卡片中显示我的快递位置和我的位置信息;PageAbility中可以打开自定义地图,查询POI点,做路径规划、路径推荐等;查看了高德、百度、华为、腾信地图的后发现,各大厂商对鸿蒙系统的支持能......
  • ResultSet详解
    ResultSet类型ResultSet对象的类型主要体现在两个方面:(1)游标可操作的方式。(2)ResultSet对象的修改对数据库的影响。后者称为ResultSet对象的敏感性。ResultSet有3种不同的类型,分别说明如下。(1)TYPE_FORWARD_ONLY​ 这种类型的ResultSet不可滚动,游标只能向前移动,从第一行到最后......
  • Vue3【Axios网络请求(GET、POST 、并发请求、全局配置 )】(八)-全面详解(学习总结---从入
    ......
  • Vue3【Transition(效果、CSS 过渡、使用animation、TransitionGroup、 KeepAlive、Tele
    ......
  • 原码、反码、补码和移码详解
    计算入门原码:正数是其二进制本身;负数是符号位为1,数值部分取X绝对值的二进制。反码:正数的反码和原码相同;负数是符号位为1,其它位是原码取反。补码:正数的补码和原码,反码相同;负数是符号位为1,其它位是原码取反,未位加1。(或者说负数的补码是其绝对值反码未位加1)移码:将符号位取反......
  • NodeJS 实战系列:个人开发者应该如何选购云服务
    这文章至少值一千元,因为这是我保守估计花出去的冤枉钱(请自行脑补一个苦笑的emoji)文章中会穿插选择云服务的一些建议,当然也会提供一些“薅羊毛”的技巧。不过在此之前我们要想清楚一件更重要的事情:我为了什么购买云服务做产品还是做技术这个问题不仅决定了你接下来的购买策略,还......
  • Java 序列化详解
    XML和JSON是两种经常在网络使用的数据表示格式,这里我们介绍如何使用Java读写XML和JSON。 一、XML概述1、XML简介我们都知道对象是不能在网络中直接传输的,不过还有补救的办法。XML(ExtensibleMarkupLanguage)可扩展标记语言,本身就被设计用来存储数据,任何一个对象都可以用XML来描......
  • Python 数据结构与算法详解
    一、数据结构与算法1、算法提出1.算法概念算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机按照确切的步骤来执行一个指定的任务。一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。算法是独立......