JS 数组方法 - 个人知识记录

112 阅读3分钟

一、增

1、push 末尾增加

const arr = [1,2,3]
arr.push(4)
console.log(arr) // [1,2,3,4]

2、unshift 开头增加

const arr = [1,2,3]
arr.unshift(4)
console.log(arr) // [4,1,2,3]

二、删

1、pop 末尾弹出

    const arr1 = [1,2,3]
    const xxx = arr1.pop()
    console.log(arr1) // [1,2]
    console.log(xxx) // 3

2、shift 开头弹出

    const arr1 = [1,2,3]
    const xxx = arr1.shift()
    console.log(arr1) // [2,3]
    console.log(xxx) // 1

三、改

1、forEach 遍历

  • 不改变原数组的栈元素
  • 可以改变原数组的栈元素所引用的内容

语法:arr.forEach((元素,下标,原数组)=>{执行内容})

    // 原数组栈元素没有被改变
    const arr1 = [1, 3, 2]
    arr1.forEach((item, index, arr) => {
      item = item + 1
    })
    console.log(arr1) // [1,2,3]

    // 原数组栈元素引用的堆内容被改变
    const arr2 = [{ xxx: 1 }, { xxx: 2 }, { xxx: 3 }]
    arr2.forEach((item, index) => {
      item.xxx = '666'
    })
    console.log(arr2) // [{ xxx: '666' }, { xxx: '666' }, { xxx: '666' }]

2、splice() 根据下标修改数组内元素

语法:arr.splice(下标,数量,值)

    // 增
    const arr1 = [1, 2, 3]
    arr1.splice(1, 0, '666')
    console.log(arr1) // [1,2,3]

    // 删
    const arr1 = [1, 2, 3]
    arr1.splice(1, 1)
    console.log(arr1) // [1,3]

    // 改
    const arr1 = [1, 2, 3]
    arr1.splice(1, 1, '666')
    console.log(arr1) // [1,'666',3]

3、sort 排序

语法:arr.sort((第一个元素,第二个元素)=>{返回值})

  • 返回值:
    • >0 // a在b后
    • <0 // a在b前
    • ===0 // 排序不变
    const arr1 = [1, 3, 2]
    arr1.sort((a, b) => {
      return a > b ? 1 : -1
    })
    console.log(arr1) // [1,2,3]

4、reverse 翻转

    const arr1 = [1, 2, 3]
    arr1.reverse()
    console.log(arr1) // [3,2,1 ]

5、fill 覆盖

语法:arr.fill(值,开始下标,结束下标[不包含])

    const arr1 = [1, 2, 3]
    arr1.fill('666', 1, 2)
    console.log(arr1) // [1,'666',3 ]

四、取

1、join 转字符串

  • 返回数组元素组成的字符串,不改变原数组
  • 只能转(Number,String,Boolean)类型元素

语法:const str = arr.join('分隔符')

    const arr1 = [1, 2, 3, '666', true]
    const str = arr1.join(' && ')
    Bo
    console.log(str) // 1 && 2 && 3 && 666 && true

2、filter 过滤

  • 遍历原数组,返回符合条件的元素组成的新数组,不改变原数组

语法:const newArr = arr.filter((元素,下标,原数组)=>{return true})

  • return为true返回当前元素,为false跳过当前元素
    const arr1 = [1, 2, 3]
    const newArr = arr1.filter((item, index, arr) => {
      if (item > 1) {
        return true
      }
    })
    console.log(arr1) // [1,2,3]
    console.log(newArr) // [2,3]

3、map 由原数组得新数组

  • 遍历原数组,返回操作后数组,不改变原数组

语法:const newArr = arr.map((元素,下标,原数组)=>{执行内容})

  • 执行内容一定要有返回值
    const arr1 = [1, 2, 3]
    const newArr = arr1.map((item, index, arr) => {
      return item + 1
    })
    console.log(arr1) // [1,2,3]
    console.log(newArr) // [2,3,4]

4、includes 包含

  • 返回布尔值,判断数组是否包含所检测的元素

    语法:arr.includes(检测元素)

    const arr1 = [1, 2, 3]
    const xxx1 = arr1.includes(1)
    console.log(xxx1) // true
    console.log(arr1.includes(4)) // false

5、every 是否每项都满足

  • 返回布尔值,判断每一项是否都符合
    const arr1 = [1, 2, 3]
    const bol_every = arr1.every((item, index, arr) => {
      return item > 0
    })
    console.log(bol_every) // true

6、some 是否有一项满足

  • 返回布尔值,判断是否有一项符合
    const arr1 = [1, 2, 3]
    const bol_some = arr1.some((item, index, arr) => {
      return item < 0
    })
    console.log(bol_some) // false

7、indexOf 寻找元素位置

  • 返回指定元素下标

语法:arr.indexOf(元素,开始位置)

  • 找不到返回:-1
    const arr1 = [1, 2, 3]
    console.log(arr1.indexOf(1)) // 0
    console.log(arr1.indexOf(1, 1)) // -1

8、reduce 累加

  • 返回累加值

语法:const sum = arr.reduce((上一次结果,下一次的值)=>{执行内容},初始值)

    const arr1 = [1, 2, 3]
    const sum = arr1.reduce((sum, item) => {
      return sum + item
    }, 0)
    console.log(sum) // 6

9、reduceRight 累加(反向)

  • 和reduce一样,但是从数组末尾开始

10、find、findIndex 寻找

  • 返回符合条件的第一个元素或索引

语法:const xxx = arr.find((item, index, arr) => {条件})

    const arr1 = [1, 2, 3]
    const xxx1 = arr1.find((item, index, arr) => {
      return item > 1
    })
    console.log(xxx1) // 2
    const xxx2 = arr1.findIndex((item, index, arr) => {
      return item > 1
    })
    console.log(xxx2) // 1

11、concat 合并

  • 合并数组产生新数组,不改变原数组
  • 浅克隆
    const arr1 = [{ a: 1 }, { b: 2 }]
    const arr2 = [{ c: 3 }, { d: 4 }]
    // 浅克隆
    newArr1 = arr1.concat(arr2)
    // 等同
    newArr2 = [...arr1, ...arr2]
    console.log(newArr1)
console.log(newArr1) // [{ a: 1 }, { b: 2 }, { c: 3 },{ d: 4 }]

12、slice 复制

  • 返回数组,且不改变原数组
  • 浅复制

语法:const xxx = arr.slice(开始下标,结束下标[不包含])

    const arr1 = [1, 2, 3, { a: 4 }]
    const xxx = arr1.slice(3, 4)
    console.log(arr1) // [1, 2, 3, { a: 4 }]
    console.log(xxx) //[{ a: 4 }]