用途:帮助开发者在 JavaScript 中为具体场景挑选合适的原生集合类型,兼顾复杂度、语义清晰度、命名、稳定性与可测试性,而非只追求速度。
主要能力:给出选型对照——固定结构/DTO/JSON 用 Object;动态字符串字典用 Map 或 Object.create(null);非字符串键、插入顺序、.size 用 Map;有序列表与索引访问用 Array;唯一值与快速成员判断用 Set;不阻止回收地附加数据用 WeakMap/WeakSet;数值与二进制数据、I/O、加密用 TypedArray/ArrayBuffer。同时列出常见操作的平均复杂度:Object 固定形状字段访问 O(1),Array 索引读写与 push/pop 为 O(1),includes/indexOf/splice/shift/unshift 为 O(n),Map/Set 的增删查为摊还 O(1)、遍历 O(n),WeakMap/WeakSet 无遍历,TypedArray 索引 O(1)、扩容复制 O(n)。
使用方式:按用途选择结构,让类型表达意图(Set 表示唯一成员、Map 表示键值注册表、Array 表示有序序列、普通 Object 表示记录)。命名用复数表示集合、按角色而非类型命名(如 seenIds、socketToSession),布尔成员判断读作 has/is。API 边界把输入视为不可变,必要时复制或冻结;明确返回的集合是实时共享还是快照。测试优先纯函数,断言可观察内容([...set]、Object.fromEntries(map)、length/size)。对不可信键使用 Object.create(null) 或 Map 以防原型污染;长期存活的 Map/Set 需限制增长(最大容量、TTL、淘汰)。
限制与提示:WeakMap/WeakSet 键必须是对象或 symbol,不可遍历、无 .size;对象唯一性按引用而非深比较;Map/Set 无 JSON.stringify,需显式转换;TypedArray 长度固定,扩容需复制;热路径避免 Array.shift/unshift,改用环形或链表结构;保持对象形状与数组元素类型稳定,避免稀疏数组与混合类型。资料未提供安装命令、平台或收费信息。