您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页es6 Set 的遍历、性能

es6 Set 的遍历、性能

来源:二三四教育网

Es6推出了SetMap等操作。分别对应于之前常用的ArrayObject.

Set而言,与Array最大的不同在于Set的数据是不能够有重复的。那么他们的性能到底如何呢。可以进行一个比较
Array

let s = []
for(let i = 0; i < 10000 * 1000;i++) {
    s.push(i);
};
let begin = new Date().getTime();
s.push(10000 * 10000 - 1);
let end = new Date().getTime();
console.log(`添加消耗${end-begin}ms`);
begin = new Date().getTime();
s.indexOf(10000 * 10000 - 1);
end = new Date().getTime();
console.log(`判断消耗${end-begin}ms`);

输出结果如下:

image.png

Set

let s = new Set();
let begin = new Date().getTime();
for(let i = 0; i < 10000 * 1000;i++) {
    s.add(i);
};
let end = new Date().getTime();
console.log(`消耗${end-begin}ms`);
begin = new Date().getTime();
s.add(10000 * 10000 - 1);
end = new Date().getTime();
console.log(`添加消耗${end-begin}ms`);
begin = new Date().getTime();
s.has(10000 * 10000 - 1);
end = new Date().getTime();
console.log(`判断消耗${end-begin}ms`);

输出结果如下:


image.png

从上面可以看出

  1. 添加元素的角度看,数组比Set快很多
  2. 获取某个元素的角度看,Set比数组快很多

那么,再添加元素的时候是遍历的?
应该不可能,因为如果是遍历的话,那么has就不可能这么快,因为完全可以通过has的方法去获取存在不存在,那么。之所以慢,应该就是构建Set时,内部处理消耗了时间。而has能够这么快,也是因为内部形成了映射。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

Copyright © 2019-2025 how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务