如何操作数组_javascript数组方法有哪些?

JavaScript数组常用方法核心在于增删改查与遍历转换:push/pop/unshift/shift/splice用于增删;arr[i]=、splice()、map()用于修改;indexOf/includes/find/findIndex用于查找;forEach/map/filter/reduce用于遍历转换;slice/concat/flat/some/every/sort等高频实用。

JavaScript 数组方法很多,但真正常用、实用的其实就十几种。掌握它们的核心逻辑和适用场景,比死记硬背所有方法更重要。

增删改查:最常操作的四大类

数组操作基本围绕“添加、删除、修改、查找”展开,对应的方法也最常用:

  • 添加:用 push()(尾部加)、unshift()(头部加)、splice(索引, 0, ...项)(任意位置插入)
  • 删除:用 pop()(删尾)、shift()(删头)、splice(索引, 数量)(删中间)、filter()(按条件批量删)
  • 修改:直接赋值 arr[i] = 新值;或用 splice(索引, 1, 新值) 替换;map() 适合批量计算后生成新数组
  • 查找:用 indexOf()(找第一个索引)、includes()(判断是否存在)、find()(找满足条件的元素)、findIndex()(找它的索引)

遍历与转换:处理数据的主力方法

日常开发中,多数数组操作不是为了改原数组,而是把数据“变成想要的样子”:

  • forEach():只遍历,不返回新数组(适合发请求、打日志等副作用操作)
  • map():遍历并返回一个新数组(比如把 [1,2,3] 变成 ['1','2','3']
  • filter():返回满足条件的新数组(比如筛出所有大于10的数)
  • reduce():把数组“压缩”成一个值(求和、扁平化、分组统计都靠它)

其他高频实用方法

这些方法看似小众,但在实际项目里出现频率很高:

  • slice(start, end):安全截取子数组(不改原数组,比 splice 更常用)
  • concat(...arrays):合并数组(注意它不修改原数组)
  • flat(depth):扁平化嵌套数组([1,[2,3],[4,[5]]].flat(2)[1,2,3,4,5]
  • some()every():做条件判断(有没有?是否全部?)
  • sort((a,b) => a - b):排序要注意传比较函数,否则按字符串排

避坑提醒:几个容易踩的点

有些方法看着像,行为却完全不同,用错会导致静默 bug:

  • splice() 改原数组,slice() 不改 —— 名字像,作用相反
  • push() 返回新长度,concat() 返回新数组,别混淆返回值
  • map()forEach() 都遍历,但前者必须有 return,否则得到全是 undefined 的数组
  • find() 找不到返回 undefined,不是 -1(那是 indexOf

基本上就这些。不用一次全记住,先熟用 push/pop/filter/map/find 这几个,再根据需求慢慢扩展。关键不是数量,是理解每个方法“做什么、改不改原数组、返回什么”。