数组的常用方法

25 阅读2分钟

一、增删元素

  • push()

    • 在末尾添加元素。
    • ✅ 修改原数组
    • 示例:arr.push(4) → [1,2,3,4]
  • pop()

    • 删除末尾元素。
    • ✅ 修改原数组
    • 示例:arr.pop() → [1,2]
  • unshift()

    • 在开头添加元素。
    • ✅ 修改原数组
    • 示例:arr.unshift(0) → [0,1,2,3]
  • shift()

    • 删除开头元素。
    • ✅ 修改原数组
    • 示例:arr.shift() → [2,3]
  • splice()

    • 删除/替换元素并添加新元素。
    • ✅ 修改原数组
    • 示例:arr.splice(1,2,'a') → [1,'a',4]

二、查找元素

  • indexOf()

    • 返回第一个匹配元素的索引。
    • ❌ 不修改原数组
    • 示例:arr.indexOf(2) → 1
  • includes()

    • 判断是否包含某元素(返回布尔值)。
    • ❌ 不修改原数组
    • 示例:arr.includes(3) → true
  • find()

    • 返回第一个满足条件的元素。
    • ❌ 不修改原数组
    • 示例:arr.find(x => x > 2) → 3
  • findIndex()

    • 返回第一个满足条件的元素的索引。
    • ❌ 不修改原数组
    • 示例:arr.findIndex(x => x > 2) → 2

三、转换处理

  • map()

    • 对每个元素执行函数,返回新数组。
    • ❌ 不修改原数组
    • 示例:arr.map(x => x*2) → [2,4,6]
  • filter()

    • 过滤符合条件的元素,返回新数组。
    • ❌ 不修改原数组
    • 示例:arr.filter(x => x < 3) → [1,2]
  • reduce()

    • 累积计算,返回单个值。
    • ❌ 不修改原数组
    • 示例:arr.reduce((a,b) => a+b) → 6
  • slice()

    • 截取子数组。
    • ❌ 不修改原数组
    • 示例:arr.slice(1,3) → [2,3]

四、排序与反转

  • sort()

    • 排序数组(默认按字符串排序)。
    • ✅ 修改原数组
    • 示例:arr.sort((a,b) => a-b) → [1,2,3]
  • reverse()

    • 反转数组。
    • ✅ 修改原数组
    • 示例:arr.reverse() → [3,2,1]

五、其他实用方法

  • forEach()

    • 遍历数组(无返回值)。
    • ❌ 不修改原数组
    • 示例:arr.forEach(x => console.log(x))
  • every()

    • 检查所有元素是否满足条件(返回布尔值)。
    • ❌ 不修改原数组
    • 示例:arr.every(x => x < 4) → true
  • some()

    • 检查至少一个元素满足条件(返回布尔值)。
    • ❌ 不修改原数组
    • 示例:arr.some(x => x > 2) → true

六、ES6+ 新增方法

  • Array.from()

    • 将类数组对象或可迭代对象转为数组。
    • 示例:Array.from('abc') → ['a','b','c']
  • Array.of()

    • 创建新数组(避免 new Array() 的歧义)。
    • 示例:Array.of(1,2,3) → [1,2,3]
  • flat()

    • 展平嵌套数组。
    • 示例:[1,[2,3]].flat() → [1,2,3]

关键提示

  • ✅ 表示修改原数组,❌ 表示不修改原数组
  • 优先使用 map()/filter() 替代 for 循环,提升代码可读性。
  • splice() 功能强大,但需注意索引和参数的顺序。