set对象

如何使用set对象

首先创建一个set对象

const mySet = new Set();

现在我们拥有了一个空的set对象,我们可以通过.add方法向其中添加一个一个数字1

mySet.add(1);

我们怎么知道向mySet中成功添加了1呢?可以通过.has方法

mySet.has(1); //true

我们再向mySet中添加一个对象,并且检查是否添加对象成功

const obj = { name: 'Daffodil' };
mySet.add(obj);
mySet.has(obj);//true

需要注意的是我们检查的是对象的引用,而不是对象自己的keys,换言之,下面的返回值就是false

mySet.has({ name: 'Daffodil' }); //false

我们可以通过.size方法知道mySet中有多少个元素

mySet.size;//2

我们可以通过.delete方法删除mySet中某个元素

mySet.delete(1);
mySet.has(1); // false

最后我们可以通过.clear方法清除mySet中所有元素

mySet.clear();
mySet.size; //0

对set对象进行遍历

  1. 最简单的遍历一个set对象的方法是使用forEach方法:
new Set([1, 2, 3]).forEach(el => {
  console.log(el * 2);
});
// 2 4 6
  1. 通过entries方法遍历
    entries() 方法返回一个新的迭代器对象 ,这个对象的元素是类似 [value, value] 形式的数组,value 是集合对象中的每个元素,迭代器对象元素的顺序即集合对象中元素插入的顺序。由于集合对象不像 Map 对象那样拥有 key,然而,为了与 Map 对象的 API 形式保持一致,故使得每一个 entry 的 key 和 value 都拥有相同的值,因而最终返回一个 [value, value] 形式的数组。
var mySet = new Set();
mySet.add("foobar");
mySet.add(1);
mySet.add("baz");

var setIter = mySet.entries();

console.log(setIter.next().value); // ["foobar", "foobar"]
console.log(setIter.next().value); // [1, 1]
console.log(setIter.next().value); // ["baz", "baz"]

效率说明

set对象和数组很像,但是它们之间的差异可能对 你的应用的性能产生影响,因为set对象是通过哈希表(或者具有类似哈希表效率的方法)来实现的。因此当您将某些东西存储在数组中时,可能必须遍历整个数组才能找到该项目,但是对于set对象,查询是瞬时的。
实际上,在大多数情况下,性能都可以忽略不计,但是如果您不得不跟踪大量数据的时候,可能使用set对象会比数组对象更好一点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容