Js 数组方法整理

9/22/2022 js

# Array

# 其他

  • length 数组中元素的个数
  • constructor:返回对创建对象的数组函数的引用(可以用来判断变量是否为数组)

# 方法

  • arr.push();

    • 描述:向数组末尾追加元素

    • 参数:追加的元素

    • 返回值:修改后的length

    • 可以追加多个

      会修改原数组

  • arr.unshift();

    • 描述:向数组的开头添加元素

    • 参数:添加的元素

    • 返回值:修改后的length

    • 可以追加多个

      会修改原数组

  • arr.pop();

    • 描述:删除末尾的元素

    • 参数:无参数

    • 返回值:被删除的元素

    • 会修改原数组

      只能删除一个元素

  • arr.shift();

    • 描述:删除开头的一个元素

    • 参数:无参数

    • 返回值:被删除的元素

    • 同上

  • arr.splice(位置,删除元素的个数,要追加的元素);

    • 描述:在数组的任意位置上添加删除

    • 参数:第一个参数:操作的元素的位置

      ​ 第二个参数:删除元素的个数

      ​ 第三个元素:要追加的元素,可以是多个,所以不止有三个元素

    • 返回值:删除的元素组成的数组

    • 如果单纯添加元素的时候,第二个单数传0

      同时删除和添加,先删除后添加

      添加或删除包含第一个参数对应下标的元素

      修改原数组

  • arr.join(" ");

    • 描述:使用分隔符将数组数据隔开拼接成字符串

    • 参数:分隔符(连接符)

    • 返回值:已经拼接好的字符串

    • 不修改原数组

  • arr.slice(截取的起始下标,结束下标);

    • 描述:截取数组

    • 参数:同()

    • 返回值:截取到的数组

    • 截取时,包含起始下标,不包含结束下标

      不修改原数组

      参数可以是是负数

      如果只有一个起始下标参数,代表从起始下标开始截取到最后

  • arr.concat();

    • 描述:多个数组的连接

    • 参数:拼接的数组

    • 返回值:连接之后的新数组

    • 不修改原数组

      类似于:arr = [...arr1,...arr2] ------arr = arr1.concat(arr2);

  • arr.indexOf(值)

    • 描述:查找某个值在数组中的第一次出现的下标
    • 返回值:数据的下标,没有找到返回-1
  • arr.lastIndexOf(值);同上

  • arr.includes();ES7新加API

    • 描述:用于检查数组是否包含某元素

      • var arr = [1,2,{name:"张三"}]
        arr.includes(2)     // true
        arr.includes(4)     // false
        arr.includes({name:"张三"})     // false
        
        1
        2
        3
        4
    • 参数

      • 要索引的值

      • 搜索的开始索引

      • ['a', 'b', 'c', 'd'].includes('b')         // true
        ['a', 'b', 'c', 'd'].includes('b', 1)      // true
        ['a', 'b', 'c', 'd'].includes('b', 2)      // false
        
        1
        2
        3
    • 返回值:包含返回true,否则返回false

      • 无法检测对象是否存在
      • 假如只想知道某个值是否在数组中而并不关心它的索引位置,建议使用includes()
  • arr.sort()

    • 描述:数组的排序

    • 参数:if没有参数,则按照字符的编码开始按顺序排序

      ​ if有参数,参数必须为一个函数(回调函数)回调函数有两个参数,a,b,a-b正序,b-a倒序

    • 返回值:排序之后的数组

    • 修改原数组

  • arr.reverse();

    • 描述:数组倒序,将数组翻转

      • var arr=[1,5,8,6,9,4,2,3];
        console.log(arr.reverse());     // (8) [3, 2, 4, 9, 6, 8, 5, 1]
        console.log(arr);               // (8) [3, 2, 4, 9, 6, 8, 5, 1]
        
        1
        2
        3
    • 返回值:修改后的数组

    • 修改原数组

  • arr.forEach();

    • 描述:遍历数组
    • 参数:(val,index)=>{} val:值index:下标
  • arr.filter();

    • 描述:根据回调函数的返回值对元素进行筛选

      • true:元素保留
      • false:元素跳过
    • 参数:回调函数

    • 返回值:筛选之后的数组

    • 不修改原数组

  • arr.map();

    • 描述:将数组中的所有数据按照条件改变,形成新数组

    • 参数:回调函数

    • 返回值:映射改变之后的数组

    • 不修改原数组

  • arr.some();

    • 描述:判断 根据回调函数的判断条件来选择真假

    • 参数:回调函数

    • 返回值:只要有一个回调函数返回值是true,最终some结果是true

    • 不修改原数组

  • arr.every();

    • 描述:判断 根据回调函数的判断条件来选择真假(与some比较记忆)

    • 参数:回调函数

    • 返回值:只要有一个回调函数返回值是false,最终every结果是false;

    • 不修改原数组

  • Array.from();

    • 描述:用于将两类对象转为真正的数组:类似数组的对象和可遍历的对象(包括 ES6 新增的数据结构 Set 和 Map)

    • var a={length:2,0:'aaa',1:'bbb'};  
      Array.from(a);        //['aaa','bbb']
      // 原理:Array.prototype.slice.call(a);
      var b={length:2};  
      Array.from(b);       //[undefined.undefined]
      
      1
      2
      3
      4
      5
  • Array.of();

    • 描述:用于将一组值,转换为数组。

    • 返回值:总是返回参数值组成的数组。如果没有参数,就返回一个空数组。

    • Array.of() // []
      Array.of(undefined) // [undefined]
      Array.of(1) // [1]
      Array.of(1, 2) // [1, 2]
      
      1
      2
      3
      4
  • Array.fill()

    • 描述:用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。

    • 参数值:

      • value:用来填充数组元素的值,必填。
      • start:可选起始索引,默认值为0。
      • end:可选终止索引,默认值为this.length
    • 返回值:修改之后的原数组

    • 改变原数组

    •    // 当传入单个参数的时候,该方法会用该参数的值填充整个数组
          var arr1 = new Array(5)
          console.log(arr1.fill(1)); //[1,1,1,1,1]
          var arr2 = [1, 2, 3, 4]
          console.log(arr2.fill(0)); //[0,0,0,0]
        
          // 当传入两个参数的时候,第一个参数为填充的元素,第二个为填充元素的起始位置
          var arr3 = [0, 1, 2, 3, 4, 5, 6]
          console.log(arr3.fill(1, 3)); //[0,1,2,1,1,1,1]
        
          // 当传入三个参数的时候,第一个参数为填充的元素,第二个参数和第三个参数分别指填充元素的起始和终止位置,不修改终止位置元素
          var arr4 = [0, 1, 2, 3, 4, 5]
          console.log(arr4.fill(1, 3, 5)); //[0,1,2,1,1,5]
          
          //如果提供的起始位置或结束位置为负数,则他们会被加上数组的长度来算出最终的位置,例如 起始位置为-1 就相当于array.length-1
          var arr5 = [0, 1, 2, 3, 4, 5]
          console.log(arr5.fill(1, -3));//[0,1,2,1,1,1]
          var arr6 = [0, 1, 2, 3, 4, 5]
          console.log(arr6.fill(1, 3, -2));//[0,1,2,1,4,5]
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
  • arr.reduce();

    • 描述:累加器

    • 参数:

      • 回调函数(pre, item, index, arr)=> {}
        • 第一个参数:per\total 若规定五个参数则第五个为per,若无规定则为数组第一项
        • 第二个参数:item若规定per为数组第一项则item为数组第二项 若设置了第五个参数值 则item为数组第一项
        • 第三个参数:item的索引值
        • 第四个参数:原数组
      • initialValue:初始值
    • 返回值

      • 回调函数的返回值将会作为下次pre值

      • 累加

        • arr.reduce((pre, item, index) => {
          	console.log(pre, item, index);
              return item + pre // 累加
              return item * pre // 累乘
          }, initialValue) 
          
          1
          2
          3
          4
          5
      • 整体reduce函数的返回值是最后的pre值,累加结果/累乘结果/。。。

Last Updated: 4/18/2023, 2:49:49 PM
晴天
周杰伦