请列举 JavaScript 数组对象的原生方法,并简要说明各自用途。
考察说明
考查对 JavaScript 数组原生 API 的熟悉程度和归纳能力。
回答思路
- 【回答框架 1】原生方法可按功能分类:修改原数组的方法有 push、pop、shift、unshift、splice、sort、reverse,其中 splice 可增删改,sort 默认按字符串 Unicode 排序,需传入比较函数实现数值排序。
- 【回答框架 2】查找和遍历方法包括 forEach、map、filter、some、every、find、findIndex、indexOf、lastIndexOf,其中 map 返回新数组,filter 筛选元素,find 返回第一个满足条件的值,some 和 every 检查是否部分或全部满足。
- 【回答框架 3】拼接合并类方法有 concat、join、slice,concat 返回新数组,join 将元素转为字符串连接,slice 返回浅拷贝子数组不修改原数组。
- 【回答框架 4】归纳时可对比是否会改变原数组,哪些返回新数组,以及 ES6 新增方法如 includes、flat、flatMap 的用法。
- 【关键点 1】方法分为修改原数组与非修改类,返回类型不同。
- 【关键点 2】forEach 不返回新数组而 map 返回新数组。
- 【关键点 3】排序默认按 Unicode 字符串转换,需传递比较函数。
- 【关键点 4】slice 和 splice 区别:前者返回子数组不修改原数组,后者修改原数组。
- 【关键点 5】includes 用于判断是否存在元素,indexOf 返回索引。
- 【易错点 1】误以为 forEach 可以中断循环,实际需使用 some 或抛出异常。
- 【易错点 2】sort 直接修改原数组且默认按字符串排序,容易忽略数值排序问题。
- 【易错点 3】slice 是浅拷贝,当数组元素为对象时修改对象属性会影响原数组。