JavaScript数组操作核心在于区分修改原数组(push、pop、shift、unshift、splice)与返回新数组(map、filter、slice、concat)的方法,辅以find、includes、some、every等查找判断方法及扩展运算符、reduce、flat等高频技巧。

JavaScript数组操作的核心在于理解哪些方法会改变原数组、哪些返回新数组,以及它们最常用的场景。掌握以下6个方法基本覆盖日常开发80%的需求。
修改原数组的方法
这些方法直接改变原始数组,适合需要就地更新的场景:
- push():在末尾添加一个或多个元素,返回新长度。常用于动态收集数据,比如事件循环中累积结果。
- pop():删除并返回最后一个元素。配合 push 实现栈结构(后进先出)。
- shift():删除并返回第一个元素。注意性能较差(需重排所有索引),仅在必须队列首删时使用。
- unshift():在开头插入一个或多个元素。同样有性能开销,慎用。
-
splice():最灵活的“万能修改器”。可删除、替换、插入任意位置的元素,返回被删除的元素数组。例如
arr.splice(2, 1, 'new')表示从索引2删1个,插入'new'。
返回新数组的方法(不修改原数组)
函数式编程偏好这类方法,利于避免副作用、提升可读性与调试效率:
-
map():对每个元素执行函数,返回等长新数组。处理数据转换最常用,比如
numbers.map(n => n * 2)。 -
filter():返回满足条件的元素组成的新数组。筛选逻辑清晰直观,如
users.filter(u => u.active)。 -
slice():截取子数组(不包含结束索引),原数组不变。常用于浅拷贝或分页取数,如
arr.slice(0, 10)取前10项。 -
concat():合并数组,返回新数组。比扩展运算符稍老,但兼容性更好;现代写法更倾向
[...arr1, ...arr2]。
查找与判断类方法
快速定位或验证数据存在性,避免手写 for 循环:
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
立即学习“Java免费学习笔记(深入)”;
-
find():返回第一个匹配元素(值本身),找不到返回 undefined。适合找对象,如
users.find(u => u.id === 123)。 - findIndex():返回第一个匹配元素的索引,找不到返回 -1。需要索引做后续操作时用它。
-
includes():返回布尔值,判断是否含某值。比
indexOf() !== -1更语义化,支持 NaN。 - some() 和 every():分别判断是否存在/是否全部满足条件,返回布尔值。常用于表单校验或权限判断。
其他高频实用技巧
不是独立方法,但组合使用频率极高:
-
扩展运算符(...):展开数组,实现浅拷贝(
[...arr])、合并([...a, ...b])、解构([first, ...rest] = arr)。 -
reduce():高阶聚合工具,可替代 map+filter 组合,也能实现扁平化、计数、分组等复杂逻辑。初学可先掌握基础用法,如求和:
arr.reduce((sum, n) => sum + n, 0)。 -
flat():处理嵌套数组,
arr.flat(Infinity)可完全拍平多维数组。替代手写递归的简洁方案。
不需要死记所有方法,先吃透 push/pop/map/filter/splice/some/every 这几个,再根据项目需要逐步扩展。关键是理解“改原数组”和“返新数组”的分界,这决定了代码是否易维护、是否引发隐蔽bug。









