小编ste*_*gro的帖子

Javascript Maps 是否有一组可以设置的键,或者它们是否有一组可以完成的键操作?

所以我知道 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。地图大小将是一个变量(取决于您删除的元素数量,在本例中为 …

javascript arrays maps v8

12
推荐指数
2
解决办法
470
查看次数

标签 统计

arrays ×1

javascript ×1

maps ×1

v8 ×1