You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何以数组作为Map的键无法正常工作?

为什么Map.get([2,2])返回undefined?

问题核心在于JavaScript引用类型的相等判断规则。

在JavaScript中,数组属于引用类型——哪怕两个数组的元素完全一致,只要是单独创建的,就会在内存中生成不同的对象,拥有不同的引用地址。

看你的代码:

let map = new Map();
map.set([2,2], 4); // 这里的[2,2]是第一个独立的数组对象
map.get([2,2]); // 这里的[2,2]是另一个全新的数组对象

Map判断键是否匹配时,对引用类型采用**严格相等(===)**比对。由于这两个数组的引用地址不同,[2,2] === [2,2]的结果是false,因此无法匹配到之前存入的键,最终返回undefined。

如果要实现预期效果,你需要把数组存入变量,让set和get使用同一个引用:

let key = [2,2];
let map = new Map();
map.set(key, 4);
map.get(key); // 此时返回4

内容的提问来源于stack exchange,提问作者Omn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:34:52