• JavaScript数组学习总结


    数组
       数组
          1.数组:数组是一组数据(数据类型不限,任意)的有序集合===>我们写代码,一般一个数组只放一种数据类型的数据

          2.我们写代码,一般一个数组只放一种类型的数据

          3.注意: 大多数的语言里面数组的存储是连续的,但是js的数组特点决定了js的数组不一定是连续的。
       数组的特点
          1.作用:将许多零散的数据组成一个整体

          2.数组本身属于复杂数据类型(引用数据类型/对象),即我们使用的数组就是“对象”

          3.数据类型不限,任意(一般一个数组只放一种数据类型的数据)

          4.根据需要,对数组内部数据进行一些操作(增删查改)
       数组的创建
          1.字面量的方式
          例如: let arr = [];(没有初始化值)
          例如: let arr = [ 1,2,3,4,5,"6"];(初始化了六个值)

          2.构造函数的方式
          例如: le arr = new Array();(没有初始化值)
          例如: let arr = new Array(1,2,3,4,5,"6")(为数组初始化)
          如果let arr = new Array(5)就相当于创建了五个空元素的arr数组
       数组的下标
          数组中存储是数据时有序的,我们就给每一个元素加一个编号,称之为“下标”/"索引"(index)
          索引的特点: index从0开始,到 “数组元素个数-1” 结束
          下标的使用: 数组名称[index]===> 查看数据:(查询时,越界?访问到一个undefined值,不管学什么语言,越界一般是不允许的)
        多维数组
          数组里面嵌套数组的这种结构,就叫做多维数组。二维数组本质上就是一维数组作为了一个一维数组的元素,即数组的数组;
          例如:let arr = [[1,2,3],[4,5,6]];
       数组的遍历
          1.普通for循环
          2.for...of遍历(ES6新增的)注意:可以把value看成每次循环按顺序取了arr中元素的值,而value不代表arr的元素,所以value的赋值不影响arr中的元素
        ES6中的操作
          1.扩展
          “...”:扩展运算符 ===>把一个整体扩展开来,相当于解构一个数组的一个维度。
          运用:
          a.合并数组  let newArr = [...arr1,...arr2]
          b.拷贝数组  let arr2 = [...arr1]

          2.解构
          等号两边保持解构一致(关于数组),然后按照对应的位置,把右边的数据赋值给左边的变量;实现批量赋值

          注意
          a、当左边的变量多余右边的数据时:没有对上号的变量值不变
          b、当左边的变量少余右边的数据时:没有对上号的数据不影响赋值

        运用场景
          a、墨水交换
           let num1 = 9,num2 = 0,t;
           [num1,num2] = [num2,num1];
          b、获取对应的值(前面用逗号隔开)
          let [,,,d,e] = arr;
       排序 例如:冒泡与选择等
          1.冒泡排序

          let array = [5,2,7,9,8,0,44,121,1];
          for(let i = 0; i < array.length - 1; i++){
              for (let j = array.length - 1; j > i; j--) {
                  if(array[j]<array[j - 1]){
                      [array[j],array[j - 1]]=[array[j - 1],array[j]];
                  }
              }
          }
          console.log(array);


          2.选择排序
          let array = [5,2,7,9,8,0,44,121,1];
          for (let i = 0; i < array.length-1; i++) {
              let min = array[i],index=i;
              for (let j = 1+i; j < array.length; j++) {
                 if(min > array[j]){
                     min = array[j];
                     index = j;
                 }
              }
             [array[i],array[index]]=[array[index],array[i]];
          }

          数组的方法(都很实用)
           1.添加
            push(value) 概念:在尾部添加元素,并返回一个新的长度
            unshift(value) 概念:在数组开头添加元素,并返回一个新的长度
           

           2.删除
            pop() 概念:删除最后一个元素
            shift() 概念:删除第一个元素  
            splice(参数1,参数2,参数3) 
            第一个参数:整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
            第二个参数:要删除的项目数量。如果设置为 0,则不会删除项目。
            第三个参数以及后面的参数:可选。向数组添加的新项目。
            返回值:包含被删除项目的新数组,如果有的话。

           3.查找
            indexOf(value) 概念:查找所在位置(index),从头开始查,查到第一个结束
            lastIndexOf(value) 从尾部开始查找和indexOf相反
            includes(value) 要查询的值,返回有没有(true/false)

           4.提取
            slice() 通过指定开始和结束索引,来提取元素(组成新数组),不影响原数组===>[start,end)

           5.拼接
            join("value")拼接:separator参数代表了“分隔符”

           6.切割
            split("value") 切割:上一个方法的反向操作

           7.其它
            concat() 
            把B数组拼接到A数组后,作为返回值返回,不影响原数组
            reverse()
            反序的改变原数组
            sort()
            默认规则是按照字典顺序的

            ex.sort(function(a,b){
                return a-b;//结果是负数b大,正数a大,相等值为0
            });
            ex.reverse();
            console.log(ex);//true====》没有副本的产生,返回值就是原数组
          数组的遍历
            - foreach 普通遍历,没有return返回值
            - map 单独处理每一个元素:会把每一个元素做return后面的处理,返回组成新的数组
            - filter 过滤,满足条件留下组成新数组
            - some/every some(只要有一个满足,返回true)/every(必须全部满足,才返回true)
            - reduce/reduceRight(迭代计算)
            - 将数组第一个元素和第二个元素分别赋值给prev,next,然后通过return后面的表达式获得一个值,该值作为下一次循环的prev,而next取下一个元素,直到取完所有元素,获得的最终值作为        返回值返回

  • 相关阅读:
    SQL Server 索引基本概念与优化
    将Heap RID转换成RID格式
    有关DeadLock的文章列表
    sql报字段过大的错误解决方法
    查询当天数据(mysql)
    cookie和session的区别
    get和post的区别
    jq点击切换按钮最简洁代码
    js提示确认删除吗
    thinkphp解决分页后序列号自增的问题
  • 原文地址:https://www.cnblogs.com/zddq/p/10546104.html
Copyright © 2020-2023  润新知