javascript数组如何操作_常用方法有哪些

JavaScript数组操作分“不修改原数组”和“直接修改原数组”两类:前者如slice、map、filter等返回新数组,安全常用;后者如push、pop、splice等改变原数组,需谨慎使用。

JavaScript 数组操作核心在于“不直接修改原数组”和“直接修改原数组”两类方法的区分,用错容易引发意外 bug。掌握常用方法的关键是理解它们的返回值、是否改变原数组、以及适用场景。

创建与基础操作

数组创建最常用的是字面量 [],也可用 Array() 构造函数(但需注意单个数字参数的歧义)。访问元素用方括号索引(从 0 开始),length 属性可读可写——设为更小值会截断数组,设为更大值只是扩展长度,新增位置值为 undefined

不改变原数组的方法(安全常用)

这类方法返回新数组或新值,原数组保持不变,适合函数式编程和避免副作用:

  • slice(start, end):浅拷贝部分元素,不包含 end 索引位置;省略参数可实现完整拷贝(如 [...arr]arr.slice()
  • concat(...arrays):合并多个数组或值,返回新数组
  • map(callback):对每个元素执行回调,返回映射后的新数组(常用于数据转换)
  • filter(callback):返回满足条件的元素组成的新数组
  • find(callback)findIndex(callback):分别返回首个匹配项或其索引(未找到返回 undefined / -1)
  • includes(value)indexOf(value):判断存在性或查找位置

直接修改原数组的方法(谨慎使用)

这些方法会改变原始数组,调用后原数组已变,后续逻辑需留意:

  • push(...items):末尾添加,返回新长度
  • pop():删除末尾,返回被删元素
  • unshift(...items):开头添加,返回新长度
  • shift():删除开头,返回被删元素
  • splice(start, deleteCount, ...items):万能修改器——可删除、插入、替换(返回被删除的元素数组)
  • reverse()sort([compareFn]):就地翻转或排序(注意 sort 默认按字符串 Unicode 排序,数字需传比较函数)

遍历与聚合

除 for 循环外,语义化遍历更清晰:

  • forEach(callback):仅遍历,无返回值(不能 break,可用 some/every 替代中断需求)
  • some(callback)every(callback):判断是否存在/是否全部满足,返回布尔值
  • reduce(callback, initialValue):累计计算(如求和、扁平化、分组),callback 接收累加器和当前值
  • flat(depth):数组扁平化(默认 depth=1,可传 Infinity 完全展开)

实际开发中优先选用不修改原数组的方法,配合解构赋值、扩展运算符提升可读性。需要修改原数组时,明确意图并做好注释。多数场景下 map/filter/reduce 组合能替代复杂循环,代码更简洁可靠。