白狗子的博客

「天上浮云如白衣,斯须改变如苍狗。」——杜甫

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)。

© 2025 My Blog. Built with Nuxt.js v4