javascript - 数组作为 javascript map 的键?

标签 javascript arrays dictionary

Map是ECMA6中的一个新对象,如果为同一个键分配多个值,它将覆盖以前的所有值。例如,

'use strict';

var m = new Map();

m.set(['aaron', 100]);
m.set(['aaron', 100], 1);
m.set(['aaron', 100], 10);
m.set(['aaron', 100], 100);
m.set(['aaron', 100], 1000);
m.set(['aaron', 100], 10000);

console.log(m.get(['aaron', 100]));

它会显示一个奇怪的输出(未定义),为什么?非常感谢。

最佳答案

Map 使用数组的引用作为键,而不是数组的内容。

这个简单的比较表明,具有相同内容的数组不是同一个数组(具有不同的引用):

const a = ['aaron', 100];
const b = ['aaron', 100];

console.log(a === b);

如果您设置并获得相同的引用,它就会起作用:

const arr = ['aaron', 100];
const m = new Map();
m.set(arr);
m.set(arr, 1);
m.set(['aaron', 100], 10);
m.set(['aaron', 100], 100);
m.set(['aaron', 100], 1000);
m.set(['aaron', 100], 10000);

console.log(m.get(arr));

关于javascript - 数组作为 javascript map 的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44819121/

相关文章:

javascript - 如何导入非 node.js 文件?

php - 拒绝使用 apache/php 直接访问文件夹中的任何文件

javascript - 如何对对象数组中的多个属性值进行计数和分组?

python - 动态连接字典

javascript - 类型错误 : click called on object that does not implement interface HtmlElement

php - 使用随机名称将图像保存到数据库中

java - 如何显示二维数组的行数和列数?

javascript - 使用数组访问(深层)嵌套对象属性

python - 如何按字母顺序和最高数字对列表中的字典进行排序

Python内存消耗: dict VS list of tuples