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/