所以我知道 Javascript Maps 有一定数量的键可以存储(大约 16.7 M )。
我试图测试我是否可以(以一种非常丑陋的方式)从数组中删除最旧的元素。我注意到无论我做什么,实际上并不是地图大小成为限制因素,而是我所做的操作数量限制了我。
下面是一个示例代码:
const map = new Map();
let i = 0;
while (true) {
i++;
set(i, i);
if (i % 1000 === 0)
console.log('INSERTED: ', i, 'KEYS', 'MAP SIZE :', map.size);
}
function set(key, value) {
if (map.size > 16770000) {
Array.from(map.keys()).slice(0, 10000).forEach(key => map.delete(key));
console.log('DELETED, current map size:', map.size);
}
try {
map.set(key, value);
} catch (e) {
console.log('MAP SIZE:', map.size, 'INSERTED:', key);
throw e;
}
}Run Code Online (Sandbox Code Playgroud)
当您运行代码段时,只需检查您的控制台。您应该注意的是最后(当抛出异常时)您将获得 Map Size 和 INSERTED。地图大小将是一个变量(取决于您删除的元素数量,在本例中为 …