前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库JavaScript · 数组与集合面试题
面试知识索引 · 分类、标签与搜索

JavaScript · 数组与集合面试题,38 道完整答案

JavaScript · 数组与集合面试题第 1 页,显示第 1–38 题,共找到 38 道完整解析,可继续按分类、标签与关键词缩小范围。

38筛选结果
52技术分类
178检索标签
1索引分页
按分类建立知识面,再用标签和搜索定位问题

每页只渲染 50 道题。分类与标签分页可抓取,自由搜索结果不会制造无限 SEO 页面。

快速定位

分类、标签与关键词搜索

清除全部筛选
题库检索
技术分类52 个
全部分类5000JavaScript285AI Agent511浏览器301React281AI 开发262CSS240Node.js217TypeScript206Vue180前端工程化138React Native135
查看全部 52 个分类
操作系统135数据库134Docker95计算机网络94API 设计90Kubernetes90HTML89Redis89全栈开发88分布式系统88系统设计86HTTP85Next.js60Angular58Linux53Nuxt51PostgreSQL46可观测性46设计模式46小程序45身份与权限45无障碍44MongoDB43PWA43Web 安全43Git42前端测试42前端性能41WebAssembly40测试40AI 工程37SvelteKit37Go35前端数据管理30React Router29AI 全栈28Svelte27算法12Java10数据结构5前端手写题3
JavaScript 标签22 个
全部标签数组与集合38值与类型50异步编程48数据处理45模块与语言机制40函数与作用域39对象与原型35异步与 Promise34性能优化7并发编程5构建工具5流处理4缓存4表单2事件循环1
查看其余 7 个标签
作用域与函数1容器化1异步与浏览器1手写与交互性能1测试1相等比较1算法1
当前页01 / 1

正在显示第 1–38 题

JavaScript38
第 1 页

本页面试问题

按稳定语义路径排序

  1. 0001
    JavaScript数组与集合

    数组 at(-1) 与 arr[-1] 有什么区别,越界和旧环境怎么办?

    用自定义负数属性对照 at(-1) 与方括号访问,解释空数组、越界、整数换算和只读获取,说明旧环境能力检测及读取最后一项的明确回退方案。

    核心关键词Array.at 负数索引优势
    #数组与集合
  2. 0002
    JavaScript数组与集合

    遍历数组时为什么通常写 i < length,怎样避免多一次或少一次?

    以零基索引和半开区间解释标准循环边界,比较小于 length、少处理末项与多读越界,给出空数组/单元素用例,并说明动态长度、删除元素和子区间遍历。

    核心关键词for 循环数组边界 off-by-one
    #数组与集合
  3. 0003
    JavaScript数组与集合

    concat 与数组展开怎样合并数组,为什么嵌套和空位结果不同?

    对照 concat 和数组展开合并嵌套数组与稀疏数组,说明新容器共享内层引用、空位保留差异,以及 concat 展开标记与同步迭代协议并非同一机制。

    核心关键词concat 与展开运算符嵌套数组
    #数组与集合#容器化
  4. 0004
    JavaScript数组与集合

    copyWithin 怎样在数组内部复制,源目标重叠会覆盖错吗?

    用重叠范围演示 copyWithin 的数组内部复制语义,说明目标位置、源范围、长度保持、空位与浅引用,并区分省去中间数组和实际性能提升。

    核心关键词copyWithin 数组方法 高效场景
    #数组与集合#性能优化
  5. 0005
    JavaScript数组与集合

    数组 keys、values、entries 返回什么,为什么遍历第二次没有数据?

    比较数组索引、值和键值对三类迭代器,演示消费后的空结果及新建迭代器,说明空位、Object.keys 和读取期间数组变化,避免把迭代器误当静态快照。

    核心关键词数组 keys values entries 迭代器区别
    #数组与集合
  6. 0006
    JavaScript数组与集合

    为什么空数组 every 返回 true,而 some 返回 false?

    从寻找反例与寻找例子解释空数组 every/some,演示回调不会执行,说明列表至少一项的独立约束、稀疏空位和 async 谓词陷阱,避免把逻辑成立当成数据存在。

    核心关键词空数组 every some 返回值
    #数组与集合#异步编程
  7. 0007
    JavaScript数组与集合

    Array.fill 的负数 start、end 怎样换算,为什么最后一项没有被填?

    按数组长度换算 fill 的负数起止位置,解释 end 不包含、越界裁剪和空区间,给出可运行范围示例,并区分原地修改、稀疏填充和同一对象引用。

    核心关键词fill 方法负数 start end 参数
    #数组与集合
  8. 0008
    JavaScript数组与集合

    查找数组元素位置时 findIndex 与 indexOf 分别适用于什么场景?

    讲解 indexOf 的严格相等匹配与 findIndex 的谓词匹配机制,给出按对象属性查找的具体场景、NaN 与稀疏数组等失败边界和选型判断。

    核心关键词findIndex 与 indexOf 查找场景区别
    #数组与集合
  9. 0009
    JavaScript数组与集合

    Array.prototype.flat 的默认展平深度是多少?flatMap 与先 map 再 flat 有何不同?

    本题明确 flat 默认展平深度为 1,flatMap 等价于深度 1 的 map 加 flat,并说明 flatMap 单次遍历、无中间数组、可通过返回空数组改变数组长度的机制与适用边界。

    核心关键词Array.prototype.flat 默认深度 flatMap 区别
    #数组与集合
  10. 0010
    JavaScript数组与集合

    什么时候用 flatMap 表达过滤和展开,比 map、filter 更合适?

    用文本分词示例展示 flatMap 每项返回零到多项的模型,区分 map/filter 的一对一与筛选,说明仅展平一层、对象引用和中间分配,不承诺所有数据下性能更好。

    核心关键词flatMap 与 map filter 组合场景
    #数组与集合#性能优化
  11. 0011
    JavaScript数组与集合

    Array.from 为什么能转换类数组,而数组展开有时会报错?

    对照只有 length 的类数组、Set 和同时提供迭代器的对象,说明 Array.from 的输入选择、缺失索引与浅拷贝,避免把普通对象键枚举或异步迭代混进同一转换规则。

    核心关键词Array.from 可迭代对象与类数组参数
    #数组与集合#异步编程
  12. 0012
    JavaScript数组与集合

    数组 includes 和 indexOf 能检测 NaN 吗?两者在语义上有哪些差异?

    解释 includes 的 SameValueZero 语义与 indexOf 的严格相等语义差异:includes 能找到 NaN,indexOf 找不到;并给出检测 NaN 的实操判断与常见误区。

    核心关键词includes 与 indexOf 检测 NaN 语义
    #数组与集合
  13. 0013
    JavaScript数组与集合

    map、filter、sort 链式处理会创建几份数组,怎样减少中间分配?

    用身份断言区分 map/filter 创建结果和 sort 修改当前数组,展示受控纯转换的循环融合,说明回调顺序、空位和副作用可能破坏等价性,并讨论峰值内存与可读性。

    核心关键词数组链式 map filter 中间内存分配
    #数组与集合
  14. 0014
    JavaScript数组与集合

    Array.isArray 与 instanceof Array 有什么区别,跨 iframe 为什么会失效?

    比较数组品牌检查与原型链判断,用伪造原型和 TypedArray 反例说明 instanceof 的边界,解释 iframe/realm 各自构造器,以及数组身份与元素内容验证的区别。

    核心关键词Array.isArray 与 instanceof 跨 realm 区别
    #数组与集合
  15. 0015
    JavaScript数组与集合

    怎样手写 Symbol.iterator,让普通对象支持 for...of 和数组展开?

    用固定标签序列手写可重复遍历的普通对象,解释 iterable 与 iterator、next 返回对象和 done 边界,验证两个独立游标,并讨论提前退出与资源清理。

    核心关键词自定义迭代器 Symbol.iterator for...of
    #数组与集合
  16. 0016
    JavaScript数组与集合

    什么是类数组对象?arguments 对象与真实数组有什么区别?如何转换?

    本题解释类数组对象定义(length和索引),对比 arguments 与数组在原型链与方法上的差异,并说明用 Array.from 转换的机制与适用条件。

    核心关键词类数组对象 arguments 与数组转换
    #数组与集合
  17. 0017
    JavaScript数组与集合

    reduce 与 reduceRight 遇到顺序敏感的计算时有什么区别?

    用带括号的字符串折叠展示 reduce 与 reduceRight 的求值方向,区分反向遍历与反转最终结果,说明初始值、函数组合、空位和副作用对结果的影响。

    核心关键词reduce 与 reduceRight 遍历方向
    #数组与集合
  18. 0018
    JavaScript数组与集合

    forEach 或 map 遍历时修改原数组,哪些变化会被看到?

    用同一回调中的追加、删除和改值复现数组迭代规则,区分初始长度上界与实时属性读取,说明原范围内新增位置和前移元素,以及快照或延迟变更的替代方案。

    核心关键词forEach map 修改原数组行为
    #数组与集合
  19. 0019
    JavaScript数组与集合

    数字数组直接 sort 为什么会把 10 排在 9 前面?

    用同一数字输入对照默认字符串排序和数值比较器,说明 UTF-16 码元顺序、比较器符号、原地修改与无效数字,并区分本地化字符串排序和稳定排序。

    核心关键词数组 sort 默认字符串 Unicode 排序
    #数组与集合
  20. 0020
    JavaScript数组与集合

    Array.prototype.sort 会修改原数组吗?如果不想修改原数组该怎么做?

    sort 会修改原数组并返回同一引用。通过工单排序示例区分外层数组复制与共享元素,并说明 slice、展开和 toSorted 处理空槽时的差异。

    核心关键词sort 会修改原数组吗
    #数组与集合
  21. 0021
    JavaScript数组与集合

    数组方法 splice 与 slice 在是否修改原数组和参数含义上有何不同?

    本文对比 splice 与 slice 在修改原数组和参数含义上的区别,涵盖语法、返回值、负索引、稀疏数组行为、典型场景与常见误区,帮助开发者正确选用。

    核心关键词splice 与 slice 修改原数组区别
    #数组与集合
  22. 0022
    JavaScript数组与集合

    数组 toString 与 join 有何区别,嵌套数组真的被展平了吗?

    对照自定义分隔符和默认数组字符串转换,说明 null、undefined、空位与嵌套数组的表示,验证改写 join 会影响 toString,并区分展示文本、CSV 和可恢复序列化。

    核心关键词数组 toString 与 join 区别
    #数组与集合
  23. 0023
    JavaScript数组与集合

    数组头部 shift、unshift 为什么常比尾部 push、pop 成本高?

    从头部操作改变后续索引解释常见性能差异,区分单次与摊还成本、引擎优化和通用对象行为,展示返回值与数组变化,并讨论队列游标的内存回收策略。

    核心关键词数组头部尾部操作性能差异
    #数组与集合#性能优化#算法
  24. 0024
    JavaScript数组与集合

    为什么空数组 reduce 不传初始值会抛错,应该返回什么才合理?

    解释 reduce 无初值时寻找首个存在元素的规则,复现过滤后空数组和全空位数组的 TypeError,说明总和、最大值与结构聚合应怎样定义空输入结果。

    核心关键词空数组 reduce 无初始值错误
    #数组与集合
  25. 0025
    JavaScript数组与集合

    for...of 与 forEach 怎样跳过当前项、提前结束和处理异步任务?

    通过同一数组对照 for...of 与 forEach 的跳过和终止,解释回调 return 的作用域、稀疏数组和 async 回调陷阱,并给出查找、顺序等待与并发处理的选择依据。

    核心关键词for...of 与 forEach break continue 区别
    #数组与集合#异步编程#并发编程
  26. 0026
    JavaScript数组与集合

    用普通对象当字典时为什么会读到原型属性,Map 能避免吗?

    对照普通对象读取 toString 和 Map 查询,解释自有属性判断、零值与 undefined 的存在性,说明 null 原型字典和 Map 条目不同于对象属性,并限定其安全作用范围。

    核心关键词Map 避免原型链属性冲突
    #数组与集合
  27. 0027
    JavaScript数组与集合

    Map 的插入顺序怎样变化,和对象数字属性顺序有什么区别?

    用数字形字符串键对照 Map 和 Object.keys,验证更新原键不移动、删除重插进入末尾,说明对象数组索引键规则、Symbol 枚举范围与排序需求的区别。

    核心关键词Map 迭代顺序与对象属性顺序
    #数组与集合
  28. 0028
    JavaScript数组与集合

    JSON.stringify(Map) 为什么得到空对象,怎样可靠保存再恢复?

    用字符串键和数字值展示 Map 的条目数组编码与恢复,解释默认空对象、Object.fromEntries 键转换、对象身份和特殊值损失,并要求验证反序列化结构与重复键策略。

    核心关键词Map JSON.stringify 序列化
    #数组与集合
  29. 0029
    JavaScript数组与集合

    Map.set 和 Set.add 为什么能链式调用,delete、clear 可以吗?

    验证 Map.set、Set.add 返回当前集合而非新副本,比较 delete 的布尔结果和 clear 的 undefined,说明链式中途失败不回滚,以及 API 设计中可变构建与状态结果的区别。

    核心关键词Map Set 链式调用方法
    #数组与集合#构建工具
  30. 0030
    JavaScript数组与集合

    Map.size 与 Object.keys().length 统计的到底是什么?

    比较 Map 内部条目数与普通对象自有可枚举字符串键数量,展示更新键不增量、附加属性不计入 size、不可枚举与 Symbol 差异,并解释稀疏数组 length 的边界。

    核心关键词Map size 与对象键数量获取
    #数组与集合
  31. 0031
    JavaScript数组与集合

    Map 与普通对象在键的类型上有什么本质不同?为什么需要 Map?

    本题解释 Map 与普通对象在键类型上的本质区别:对象键仅字符串或 Symbol,Map 键任意;Map 基于 SameValueZero,无原型链冲突,支持对象键,并提供 size 和直接迭代。回答包含机制、场景与边界分析。

    核心关键词Map 与普通对象键类型对比
    #数组与集合
  32. 0032
    JavaScript数组与集合

    Set 遍历时新增、删除和重新加入成员,会不会重复处理?

    验证 Set 初始展开按插入顺序、重复 add 不移动,以及遍历中删除重插再次访问,解释删除未访问成员和新增成员规则,给出固定批次快照与动态队列的选择。

    核心关键词Set 迭代中修改元素行为
    #数组与集合
  33. 0033
    JavaScript数组与集合

    Set 怎样判重,为什么 NaN 会合并而两个相同对象不会?

    通过直接数组去重与身份断言解释 SameValueZero,不做隐式类型转换、对象按引用比较,并纠正负零保留插入符号的误解,说明业务主键去重和序列化边界。

    核心关键词Set SameValueZero 唯一性 NaN +0 -0
    #数组与集合
  34. 0034
    JavaScript数组与集合

    频繁检查成员存在时,Set.has 一定比 includes 更快吗?

    从成员查询次数和集合更新频率比较 Set 与数组,区分规范平均次线性要求、常见哈希实现和构建成本,给出复用索引示例及公平测量方法,不提供虚构性能倍率。

    核心关键词Set 与数组元素存在性检查性能
    #数组与集合#性能优化#构建工具
  35. 0035
    JavaScript数组与集合

    稀疏数组空位与 undefined 有什么区别,为什么 Array(n).map 不执行?

    从自有索引属性解释空位和显式 undefined,比较 map、filter、展开及 fill 的行为,说明原型索引、JSON null 转换和独立对象初始化,避免用长度代替真实元素数量。

    核心关键词JavaScript 稀疏数组空位与 undefined 区别
    #数组与集合
  36. 0036
    JavaScript数组与集合

    数组展开为什么能复制数组和 Set,它到底读取了什么?

    说明数组展开按同步迭代协议收集值,展示浅复制和自定义迭代器改变结果,区分对象展开的属性复制、稀疏数组稠密化以及大数据物化成本。

    核心关键词展开运算符 数组 迭代器机制
    #数组与集合
  37. 0037
    JavaScript数组与集合

    WeakMap 的键只能是对象吗,它怎样影响垃圾回收?

    纠正 WeakMap 只能使用对象的旧结论,说明现代规范允许非注册 Symbol,解释对象元数据、键身份与不可枚举,并区分可回收条件、外部强引用和确定性资源清理。

    核心关键词WeakMap 键对象 垃圾回收影响
    #数组与集合#缓存
  38. 0038
    JavaScript数组与集合

    WeakSet 适合标记对象已处理吗,和 Set 有什么不同?

    通过重复对象处理示例说明 WeakSet 的身份标记用途,区分强 Set、现代 Symbol 成员和不可枚举,并解释永久已访问与当前递归路径两种不同的图遍历语义。

    核心关键词WeakSet 与 Set 引用遍历标记对象
    #数组与集合
上一页
1
下一页
前端进阶之旅本地 Markdown 维护 · 服务端分页 · 完整内容对用户与搜索引擎一致