JavaScript-面试-数组与高阶方法
2026年10月16日·Admin·3 次浏览
面试题:map / filter / reduce?哪些会改原数组?
是否修改原数组
- 不改:
map、filter、slice、concat、reduce(本身不替换原数组引用内容,除非回调里自己改元素)。 - 会改:
sort、splice、reverse、fill、copyWithin。 forEach:无返回值,回调里可改元素(引用类型)。
map vs forEach
map返回新数组,长度与原数组一致,适合转换。forEach返回undefined,不能break,不适合链式。
reduce
累加器聚合:初始值要传全,否则空数组可能抛错;可做 map/filter 模拟、扁平化、统计。
稀疏数组
map 会跳过空槽,forEach 同理;与 for...of 行为注意区分。
类数组转数组
Array.from、[...arrLike]、Array.prototype.slice.call(arrLike)。