大一菜鸡学妹的JavaScript学习之路(二)数组的操作方法

208 阅读5分钟

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

·饭后走一走活到九十九

·饭后晒一晒病痛都不在

·饭后睡一睡永远不怕累


数组的操作方法

读写数组

  • 使用中括号访问数组 [index],多维数组也是。
  • 通过length属性,获取数组长度

读写操作

  • 尾部操作

    • push() 将1个或多个参数值加到数组尾部,并返回添加后数组长度
    • pop() 删除数组中最后一个元素,并返回被删除元素
  • 头部操作

    • unshift() 把一个或多个参数值附加到数组头部,并返回添加元素后数组的长度
    • shift() 能够删除第一个元素,并返回该元素,然后将余下所有元素前移,如果数组为空,不做任何操作,返回undefined
  • 其他操作

    • delete --原数组操作

    • splice() --返回被删除元素数组/空数组

      1. 第一个参数,设置操作的下标位置
      2. 第二个参数,设置要删除多少元素及数据类型,不设置,即从开始到末尾全部
      3. 第三个参数以后,设置要添加到数组的新元素列表
    • concat() --返回新数组

      1. concat能把传递的所有参数按顺序添加到数组尾部

数组排序

  • reverse() --在原数组上操作

    • 颠倒数组内的排列顺序,不需要参数
  • sort() --在原数组上操作

    • 任何情况下,undefined的元素都被排列在末尾

    • 传入排序函数

      • function f(a,b){
          return (a-b)//由小到大进行排序
          //return(b-a)//由大到小进行排序
        }
        var a = [3,1,2,4,5,7,6]a.sort(f);
        console.log(a);
        

数组转化

  1. toString() 将数组转换成一个字符串--返回新字符串

      var a = [1,2,3,4,5]
      var s = a.toString();
      console.log(s);//"1,2,3,4,5"
      ```
    
  2. join() 与split()相对--返回新字符串

      var a = [1,2,3];
      var s = a.join("==");
      console.log(s);//"1==2==3"
    

遍历方法

Array.from ----返回新数组

  1. 把拥有length属性的对象[类数组]或者可迭代对象,转换成真正的数组。

    1. 该类数组对象必须有length属性,用于指定数组长度。如果没有length属性,那么转换后的数组是一个长度为0的空数组。
    2. 该类数组对象的属性名必须为数值型或字符串型数字,否则返回指定长度数组,每一个值是undefined
  2. from()拥有两个参数,第一个参数就是传入类数组对象,第二个参数用来对数组处理,返回处理后的值到要返回的数组里。

    1. 
      let arr = [1,2,3,3]
      let set = new Set(arr)
      console.log(Array.from(set,item => item +1))//[2,3,4]
      
      let str = "hello";
      console.log(Array.from(str))//['h','e','l','l','o'];
      

for/for...in/for...of --原数组遍历

  1. for结合length属性与中括号[]遍历数组
  2. for...in --遍历数组索引,利用[]获取值
  3. for...of --遍历数组的值。

在原数组上迭代

  • array.forEach(callbackfn[,thisArg])

    • 参数1,回调函数,包含元素值、元素下标索引和数组对象三个参数
    • 参数2,可选参数,设置回调函数中this引用的对象。如果省略,则this为undefined
    • 迭代数组
  • array.every(callbackfn[,thisArg]) --要每一个

    • 参数1,回调函数,包含元素值、元素下标索引和数组对象三个参数
    • 参数2,可选参数,设置回调函数中this引用的对象。如果省略,则this为undefined
    • 每个元素调用函数一次,但是不会为空位元素调用回调函数,如果每次调用函数都返回true,则every返回true,否则返回false
    • 如果数组没有元素,返回true
  • array.some(callbackfn[,thisArg]) --只要一个

    • 参数1,回调函数,包含元素值、元素下标索引和数组对象三个参数
    • 参数2,可选参数,设置回调函数中this引用的对象。如果省略,则this为undefined
    • 每个元素调用函数一次,但是不会为空位元素调用回调函数,如果每次调用函数都返回false,则some返回false,否则返回true
    • 如果数组没有元素,返回true
  • array.reduce(callbackfn[,thisArg]) --汇总所有,前后联系

    • 第一个参数,回调函数

    • 可选参数,指定初始值。

    • reduce不会为空位元素调用该回调函数

    • 回调函数语法格式--参数

      • 第一个参数previousValue:上一次调用回调函数的返回值。如果reduce包含参数初始值,则第一次回调函数,pV为初始值
      • currentValue:当前元素值
      • 当前元素的下标索引
      • arry:数组对象
  • array.reduceRight(callbackfn[,thisArg])

    • 和reduce一样,不一样的是从右向左对数组中所有元素调用指定回调函数

返回新数组的方法

  • array.map(callbackfn[,thisArg]) --映射数组

    • 参数1,回调函数,包含元素值、元素下标索引和数组对象三个参数
    • 参数2,可选参数,设置回调函数中this引用的对象。如果省略,则this为undefined
    • 为数组中每个元素调用回调函数一次,但不会为空位元素调用回调函数。
    • 返回新数组,新数组包含回调函数返回值的列表
  • array.filter(callbackfn[,thisArg]) --过滤掉不符合回调函数的元素

    • 参数1,回调函数,包含元素值、元素下标索引和数组对象三个参数
    • 参数2,可选参数,设置回调函数中this引用的对象。如果省略,则this为undefined
    • 为数组每个元素调用回调函数一次,但不会为空位元素调用回调函数。
    • 返回新数组,包含回调函数返回true的所有函数
  • [ES6]find(callback) --在每个元素上执行callback,如果返回true,则返回该元素

  • [ES6]findIndex(callback)--与find类似,不过返回的是匹配元素的下标索引

  • [ES6]includes(callback)--与find类似,如果匹配到元素,返回true,代表找到了