JavaScript Array

136 阅读6分钟

创建方式

  1. constructor 构造器

    • new Array();
      

      创建一个空数组。

    • new Array(arrayLength);
      

      创建固定初始长度的数组。

      参数说明:数组初始长度。可以通过长度属性.length访问该值。

      * 数组元素初始值都是Null。

      * 如果将值分配给大于数组当前长度的元素,则数组的长度会增加。

    • new Array(element0, element1, ..., elementN);
      new Array(element0, element1, ...elements);
      

      创建数组并赋予初始值(支持结构传参)。

      参数说明:数组元素的值列表。指定此形式时,将使用指定值作为其元素来初始化数组,并将数组的长度属性设置为参数的数量。

  2. literals 直接量

    • [];
      

      创建一个空数组。

    • [element0, element1, ..., elementN];
      [element0, element1, ...elements];
      

      创建数组并赋予初始值(支持结构传参)。

      参数说明:数组元素的值列表。

  3. factory 工厂方法

    • Array.of();

      Array.of(element0, element1, ..., elementN);
      

      创建数组并赋予初始值(支持结构传参)。

      参数说明:数组元素的值列表。

    • Array.form();

      Array.form(array, callback);
      

      迭代遍历array,如果callback存在则将每个元素带入回调中执行返回执行后的元素,生成一个新的数组。

      参数说明: array 源数组。

      ​ callback(可选) 执行回调。

读写方式

数组是通过下标访问的,初始下标为0。

  • array[index];
    
  • array[index] = value;
    
  • 获取数组长度

    array.length;
    

    假如数组长度为 i,当我们设置一个索引为 i+n 的元素,该数组的 length 属性为自动变为 i+n

    假如数组长度为 i,当设置 length=i-n 时,i-n 索引之后的元素会被删除

    数组操作会自动更新 length 属性

    delete 操作符删除数组元素,数组的 length 属性不会变

    delete a[2]删除索引为 2 的元素,索引为 2 的元素变为 undefined,a.length 不变

  • 数组判断

    Array.isArray(array);
    
  • 类数组验证

    function idArrayLike(param) {
      if (param && typeof param === 'object' && Number.isFinite(param.length) && param.length >= 0 && Number.isInteger(param.length) && param.length < 4294967295) return true;
      else return false;
    }
    
    
  • 读取字符串

    JavaScript 的字符串类似于只读数组

    string.charAt(index);
    string[index];
    

API

基础Api

  • push()

    语法:数组.push(数据1,数据2,数据3,...) 作用:把所有参数按照顺序追加到数组末尾位置 返回值:追加以后数组的长度 直接操作数组

  • pop()

    语法:arr.pop(数据1,数据2,数据3) 作用:删除数组的最后一个数据 返回值:被删除的数据 直接操作原始数组

  • unshift()

    语法:arr.unshift(数据1,数据2,数据3) 作用:从数组最前面插入数据 返回值:插入后的数组长度 直接操作数组

  • shift()

    语法:arr.shift() 作用:删除数组最前面的数据 返回值:删除的数据 直接操作数组

ES3 Api

  • reverse()

    语法:arr.reverse() 作用:反转数组 返回值:反转以后的数组 直接操作数组

  • sort()

    arr.sort()---按位排序 返回值:排序好的数组 直接操作数组

  • splice()

    arr.splice(开始截取的索引,截取多少个)---第二个参数可以不写,不写代表截取到末尾 arr.splice(开始索引,多少个,替换数据1,替换数据2 ,替换数据3)---从索引位置开始截取n个字符串,截取掉的位置用替换数据填充 返回值:截取出来的数组 直接操作数组

  • concat()

    arr.concat(数组1,数组2...)---追加数据 如果参数是数组,那么把数组拆开,里面每一项追加到原数组后面。如果参数是数据,那么直接追加 返回值:追加好的数组 不改变原始数组

  • slice()

    arr.slice(开始索引,结束索引)---获取数组里的某些数据 第一个参数不写表示从头,第二个参数可以不写表示到位。参数可以是负整数,表示length+负整数 返回值:一个包含截取数据的新数组 不改变原始数组

  • join()

    arr.join('连接符号')----把数组里面的每一个数据使用连接符号连接在一起 不传递参数默认按照逗号连接 返回值:一个连接好的字符串 不改变原始数组

ES5 Api

  • indexOf()

    arr.indexOf(数据)---正向查看数组里面指定数据的索引 arr.indexOf(数据,开始索引)---从指定索引位置开始向后查找指定数据的索引 返回值:找到该数据,返回该数据的索引;没找到返回-1

  • lastIndexOf()

    arr.indexOf(数据)---反向查看数组里面指定数据的索引 arr.indexOf(数据,开始索引)---从指定索引位置开始向前反向查找指定数据的索引 返回值:找到该数据,返回该数据的索引;没找到返回-1

  • forEach()

    arr.forEach(function(item,index,arr){})---取代for循环的作用遍历数组 item:数组每一项,index:数组每一项索引,arr:原始数组 没有返回值

  • map()

    arr.map(function(item,index,arr){})----映射数组 返回值:一个新的数组,里面是对原属数组每一个数据的操作,和原数组长度一样 不改变原始数组

  • filter()

    arr.filter(function(item,index,arr){})---过滤原始数组中的 数据,把满足条件的数据放在新数组里面 返回值:一个满足条件的新数组 不改变原始数组

  • every()

    arr.every(function(item,index,arr){})---判断函数里是不是每一项都满足条件 返回值:一个布尔值。如果数组中每一项都满足条件,那么返回true,如果任意一个数据不满足条件,那么返回false 不改变原始数组

  • some()

    arr.some(function(item,index,arr){})---判断数组里是不是有某一项满足条件 返回值:布尔值,只要原始数组中有一个数据满足条件,那么返回true,如果所有数据都不满足条件,那么返回false

ES6 Api

  • find()

    arr.find(function(item){})---根据条件找到满足条件的数据 返回值:满足条件的数据

  • findIndex()

    arr.findIdenx(function(item){})---根据条件找到满足的数据 返回值:找到满足条件的数据的索引

  • flat()

    arr.flat(数字)---拍平数组 数字表示扁平化都少层 返回值:拍平以后的数组

  • flatMap()

    arr.flatMap(function(item.index,arr){})---一边拍平一边映射,只能拍平一层

  • fill()

    arr.fill(填充的数据,开始索引,结束索引)---使用指定数据填充指定索引位置 填充内容:你想用什么数据填充数组里面的索引位置 开始索引:从哪个索引位置开始填充,默认是0 结束索引:填充到索引位置,默认是末尾

  • inclodes()

    arr.includes(数据)---查看数组里面是否包含某个数据 返回值:布尔值。如果有返回true,如果没有返回false

  • copyWithin()

    arr.copyWithin(目标位置,开始索引,结束索引)---用数组里面的内容替换数组里面的内容 目标位置:从哪个索引位置开始替换 开始索引-结束索引:作为替换内容