数组 at(-1) 与 arr[-1] 有什么区别,越界和旧环境怎么办?
用自定义负数属性对照 at(-1) 与方括号访问,解释空数组、越界、整数换算和只读获取,说明旧环境能力检测及读取最后一项的明确回退方案。
数组与集合专题面试题第 1 页,显示第 1–38 题,共找到 38 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
用自定义负数属性对照 at(-1) 与方括号访问,解释空数组、越界、整数换算和只读获取,说明旧环境能力检测及读取最后一项的明确回退方案。
以零基索引和半开区间解释标准循环边界,比较小于 length、少处理末项与多读越界,给出空数组/单元素用例,并说明动态长度、删除元素和子区间遍历。
对照 concat 和数组展开合并嵌套数组与稀疏数组,说明新容器共享内层引用、空位保留差异,以及 concat 展开标记与同步迭代协议并非同一机制。
用重叠范围演示 copyWithin 的数组内部复制语义,说明目标位置、源范围、长度保持、空位与浅引用,并区分省去中间数组和实际性能提升。
比较数组索引、值和键值对三类迭代器,演示消费后的空结果及新建迭代器,说明空位、Object.keys 和读取期间数组变化,避免把迭代器误当静态快照。
从寻找反例与寻找例子解释空数组 every/some,演示回调不会执行,说明列表至少一项的独立约束、稀疏空位和 async 谓词陷阱,避免把逻辑成立当成数据存在。
按数组长度换算 fill 的负数起止位置,解释 end 不包含、越界裁剪和空区间,给出可运行范围示例,并区分原地修改、稀疏填充和同一对象引用。
讲解 indexOf 的严格相等匹配与 findIndex 的谓词匹配机制,给出按对象属性查找的具体场景、NaN 与稀疏数组等失败边界和选型判断。
本题明确 flat 默认展平深度为 1,flatMap 等价于深度 1 的 map 加 flat,并说明 flatMap 单次遍历、无中间数组、可通过返回空数组改变数组长度的机制与适用边界。
用文本分词示例展示 flatMap 每项返回零到多项的模型,区分 map/filter 的一对一与筛选,说明仅展平一层、对象引用和中间分配,不承诺所有数据下性能更好。
对照只有 length 的类数组、Set 和同时提供迭代器的对象,说明 Array.from 的输入选择、缺失索引与浅拷贝,避免把普通对象键枚举或异步迭代混进同一转换规则。
解释 includes 的 SameValueZero 语义与 indexOf 的严格相等语义差异:includes 能找到 NaN,indexOf 找不到;并给出检测 NaN 的实操判断与常见误区。
用身份断言区分 map/filter 创建结果和 sort 修改当前数组,展示受控纯转换的循环融合,说明回调顺序、空位和副作用可能破坏等价性,并讨论峰值内存与可读性。
比较数组品牌检查与原型链判断,用伪造原型和 TypedArray 反例说明 instanceof 的边界,解释 iframe/realm 各自构造器,以及数组身份与元素内容验证的区别。
用固定标签序列手写可重复遍历的普通对象,解释 iterable 与 iterator、next 返回对象和 done 边界,验证两个独立游标,并讨论提前退出与资源清理。
本题解释类数组对象定义(length和索引),对比 arguments 与数组在原型链与方法上的差异,并说明用 Array.from 转换的机制与适用条件。
用带括号的字符串折叠展示 reduce 与 reduceRight 的求值方向,区分反向遍历与反转最终结果,说明初始值、函数组合、空位和副作用对结果的影响。
用同一回调中的追加、删除和改值复现数组迭代规则,区分初始长度上界与实时属性读取,说明原范围内新增位置和前移元素,以及快照或延迟变更的替代方案。
用同一数字输入对照默认字符串排序和数值比较器,说明 UTF-16 码元顺序、比较器符号、原地修改与无效数字,并区分本地化字符串排序和稳定排序。
sort 会修改原数组并返回同一引用。通过工单排序示例区分外层数组复制与共享元素,并说明 slice、展开和 toSorted 处理空槽时的差异。
本文对比 splice 与 slice 在修改原数组和参数含义上的区别,涵盖语法、返回值、负索引、稀疏数组行为、典型场景与常见误区,帮助开发者正确选用。
对照自定义分隔符和默认数组字符串转换,说明 null、undefined、空位与嵌套数组的表示,验证改写 join 会影响 toString,并区分展示文本、CSV 和可恢复序列化。
从头部操作改变后续索引解释常见性能差异,区分单次与摊还成本、引擎优化和通用对象行为,展示返回值与数组变化,并讨论队列游标的内存回收策略。
解释 reduce 无初值时寻找首个存在元素的规则,复现过滤后空数组和全空位数组的 TypeError,说明总和、最大值与结构聚合应怎样定义空输入结果。
通过同一数组对照 for...of 与 forEach 的跳过和终止,解释回调 return 的作用域、稀疏数组和 async 回调陷阱,并给出查找、顺序等待与并发处理的选择依据。
对照普通对象读取 toString 和 Map 查询,解释自有属性判断、零值与 undefined 的存在性,说明 null 原型字典和 Map 条目不同于对象属性,并限定其安全作用范围。
用数字形字符串键对照 Map 和 Object.keys,验证更新原键不移动、删除重插进入末尾,说明对象数组索引键规则、Symbol 枚举范围与排序需求的区别。
用字符串键和数字值展示 Map 的条目数组编码与恢复,解释默认空对象、Object.fromEntries 键转换、对象身份和特殊值损失,并要求验证反序列化结构与重复键策略。
验证 Map.set、Set.add 返回当前集合而非新副本,比较 delete 的布尔结果和 clear 的 undefined,说明链式中途失败不回滚,以及 API 设计中可变构建与状态结果的区别。
比较 Map 内部条目数与普通对象自有可枚举字符串键数量,展示更新键不增量、附加属性不计入 size、不可枚举与 Symbol 差异,并解释稀疏数组 length 的边界。
本题解释 Map 与普通对象在键类型上的本质区别:对象键仅字符串或 Symbol,Map 键任意;Map 基于 SameValueZero,无原型链冲突,支持对象键,并提供 size 和直接迭代。回答包含机制、场景与边界分析。
验证 Set 初始展开按插入顺序、重复 add 不移动,以及遍历中删除重插再次访问,解释删除未访问成员和新增成员规则,给出固定批次快照与动态队列的选择。
通过直接数组去重与身份断言解释 SameValueZero,不做隐式类型转换、对象按引用比较,并纠正负零保留插入符号的误解,说明业务主键去重和序列化边界。
从成员查询次数和集合更新频率比较 Set 与数组,区分规范平均次线性要求、常见哈希实现和构建成本,给出复用索引示例及公平测量方法,不提供虚构性能倍率。
从自有索引属性解释空位和显式 undefined,比较 map、filter、展开及 fill 的行为,说明原型索引、JSON null 转换和独立对象初始化,避免用长度代替真实元素数量。
说明数组展开按同步迭代协议收集值,展示浅复制和自定义迭代器改变结果,区分对象展开的属性复制、稀疏数组稠密化以及大数据物化成本。
纠正 WeakMap 只能使用对象的旧结论,说明现代规范允许非注册 Symbol,解释对象元数据、键身份与不可枚举,并区分可回收条件、外部强引用和确定性资源清理。
通过重复对象处理示例说明 WeakSet 的身份标记用途,区分强 Set、现代 Symbol 成员和不可枚举,并解释永久已访问与当前递归路径两种不同的图遍历语义。