请从不同角度说明 JavaScript 中对数组元素进行操作的方法有哪些?
考察说明
考察 JavaScript 数组操作 API 的熟悉程度及分类归纳能力。
回答思路
- 【回答框架 1】数组操作方法可按是否改变原数组分类。改变原数组的方法包括 push、pop、shift、unshift、splice、sort、reverse、fill 等,其中 push 和 pop 在末尾增删,shift 和 unshift 在开头增删,splice 可增删改任意位置,sort 默认按字符串升序排序,reverse 反转数组。
- 【回答框架 2】不改变原数组的方法包括 concat、slice、join、indexOf、lastIndexOf、includes、find、findIndex、filter、map、forEach、every、some、reduce 等,这些方法常返回新数组或布尔值、索引等,使用时注意回调函数参数。
- 【回答框架 3】对于遍历操作,forEach、map、filter、reduce 各有特点,例如 forEach 不返回新数组,map 返回等长新数组,filter 返回满足条件的子集,reduce 可将数组归并为单个值,选择依据是是否需返回值及转换规则。
- 【关键点 1】改变原数组的方法有 push、pop、shift、unshift、splice、sort、reverse、fill。
- 【关键点 2】不改变原数组的方法有 concat、slice、join、indexOf、includes、find、filter、map、reduce 等。
- 【关键点 3】splice 可同时删除和插入元素,splice 影响原数组,slice 返回新数组。
- 【关键点 4】map 与 forEach 区别在于 map 返回新数组,而 forEach 仅遍历不返回。
- 【易错点 1】sort 默认按字符串编码排序,对数字排序需传入比较函数。
- 【易错点 2】splice 和 slice 拼写相似但行为不同,splice 修改原数组,slice 不修改。
- 【易错点 3】数组方法可能改变原数组,使用时需注意是否影响原数据。