数组方法

102 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情

前言

日常开发中,简单来说就是增删改查,这其中难点就是数据的处理,把数据处理成我们想要的结构是避免不了的,在此过程中如果我们对数组跟对象的方法熟悉,会帮我们提高效率。今天我们来看一下数组方法,一些方法可能我们会用,但是该方法return的值是什么?能不能改变原数组?我们也要熟悉。

方法

数组总共有20多种方法,我们就讲解一下常用的方法,根据操作类型大致可以分为以下几类:

循环过滤

  • forEach() 作用:循环数组 不会改成原数组 ,默认返回undefined。
     const arr = [1,2]
      arr.forEach((item,index)=>{
        //item为元素 index为下标
        console.log(item,index)
        // 1 0;2,1
      })
  • map() 作用:循环数组,将数组中的每一个元素执行回调函数,返回新数组,不会改成原数组
     const arr = [1,2]
     const arr1 = arr.map((item,index)=>{
        //item为元素 index为下标
       return item+1
      })
     console.log(arr1)//[2,3]
  • filter()作用:循环数组,返回满足条件的元素,返回新数组,不会改变原数组
    const arr = [1,2]
     const arr1 = arr.filter((item,index)=>{
        //item为元素 index为下标
       return item>1
      })
     console.log(arr1)//[2]
  • reduce() 作用:把一个函数当成累加器,数组中的每个值从左到右开始缩减,最终计算为一个值。可以用来求和。
     const arr = [1,2]
     const sum = arr.reduce((pre,cur)=>{
      return pre+cur
     },0)
     //pre为前一个值 cur为当前值 0是初始值
     console.log(sum)//3

查找元素(都不会改变原数组)

  • findeIndex()作用:找到第一个符合条件元素的下标,没有则返回-1。
     const arr = [1,2]
     const index = arr.findIndex(item=>item===1)
     console.log(index) //0 第一个元素
  • find()作用:找到第一个符合的条件元素,返回当前元素。
     const arr = [1,2,3,4]
     const item = arr.find(item=>item>1)
     console.log(item) //2
  • indexOf()作用:获取第一个跟给定值相同元素的下标。
     const arr = [1,2,1,1]
     const index = arr.indexOf(1)
     console.log(index) //0
  • lastIndexOf()获取最后一个。
    const arr = [1,2,1,1]
     const index = arr.lastIndexOf(1)
     console.log(index) //3
  • every()作用:测试所有元素是否符合判定条件,只有当所有元素都满足条件时才会返回true,否则为false。
     const arr = [1,2,3,4]
     const flag = arr.every(item=>item>1)
     console.log(flag) //false
  • some()作用:只要有一个元素满足判定条件就为true。我们可以通过这个做判断,比用forEach做些判断好用的多。
     const arr = [1,2,3,4]
     const flag = arr.some(item=>item>1)
     console.log(flag) //true
  • includes()作用:判断数组中是否包含特定值,返回布尔值。
     const arr = [1,2,3,4]
     const flag = arr.includes(1)
     console.log(flag) //true

增删元素

  • concat()作用:合并两个或多个数组,不会改变原数组,返回新数组。那个数组在前面,那个数组元素就在新数组前面,注意concat不会去重,所以要注意是否有重复元素。
     const arr = [1,2]
     const arr1 = [3,4]
     console.log(arr1.concat(arr))//[3,4,1,2]
  • reverse()作用:将一个数组倒序,返回该数组,会改变数组。
     const arr = [1,2]
     console.log(arr.reverse)//[2,1]
  • shift()删除第一个元素,返回该元素的值,更改数组的长度。
     const arr = [1,2,3]
     console.log(arr.shift())//1
  • unshift()作用:将一个或多个元素添加到数组开头,返回该数组的新长度,改变原数组。
     const arr = [1,2,3]
     console.log(arr.unshift(4))//4 数组长度
  • pop()作用:与shift()相反,删除最后一个元素,返回该元素的值,并更改数组的长度。
  • push()作用:添加一个或多个元素到数组末尾,返回该数组新长度
  • slice(start,end)作用:截取一个新的数组,返回包含被删除元素的数组。不会改变原数组,不包含end下标,没有end或者end大于最大下标时,会从start截取到最后一个元素。我们可以利用slice(-1)获取最后一个元素;slice(0)浅拷贝一个数组。
     const arr = [1,2,3,4]
     const arr1 = arr.slice(1)
     console.log(arr1)//[2,3,4]
  • splice(index,number,value)作用:添加、删除、替换新的元素来修改数组,改变原数组。index为小标,number为个数,value为新增的元素。
     const arr = [1,2,3,4]
     const arr1 = arr.splice(1,1,5,6)
     console.log(arr1)//[2]
     console.log(arr)//[1, 5, 6, 3, 4]
  • fill(value,start,end)作用:用value值在start跟end范围内填充数组,如果没有提供范围,该方法将替换所有数组的值。
     const arr = new Array(3)
     arr.fill(8)
     console.log(arr)//[8,8,8]

总结

以上就是常用的数组方法,对于一些方法返回的结果是不是有点小意外呢?数组还有一些方法如flat(),如果大家感兴趣的可以去搜一搜,还有各个方法实现的源码,还是可以学到很多东西的。