JavaScript中判断两个Map内容是否相等需手动比较:先检查size是否相同,再遍历map1的每个[key,val],用map2.has(key)和Object.is(val,map2.get(key))逐对校验。

JavaScript 中判断两个 Map 对象内容是否完全相同,不能直接用 === 或 ==,因为它们比较的是引用而非键值对内容。需要手动遍历比较键、值及元素数量。
检查 Map 大小是否一致
如果两个 Map 的 size 不同,可直接判定不相等,无需进一步比较。
- 使用
map1.size === map2.size快速排除 - 这是最廉价的初步校验,建议放在第一步
遍历 key 并逐个比对 value
确保每个 key 在另一个 Map 中都存在,且对应 value 相等(注意:value 比较需考虑类型和深度)。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 用
for...of或map1.entries()遍历第一个 Map - 对每个
[key, val],检查map2.has(key)是否为true - 再用
Object.is(val, map2.get(key))比较值(推荐Object.is而非===,能正确处理NaN和-0)
注意 key 的相等性规则
Map 使用 SameValueZero 算法判断 key 是否相等,这意味着:
-
0和-0被视为相同 key -
NaN和NaN被视为相同 key(===不满足这点) - 因此,只要用
map2.has(key)和map2.get(key),就天然兼容 Map 自身的 key 比较逻辑
完整示例函数
以下是一个简洁可靠的比较函数:
function mapsEqual(map1, map2) {
if (map1.size !== map2.size) return false;
for (const [key, val] of map1) {
if (!map2.has(key) || !Object.is(val, map2.get(key))) {
return false;
}
}
return true;
}
用法:mapsEqual(new Map([[1, 'a'], [2, 'b']]), new Map([[1, 'a'], [2, 'b']])) // true
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










