一、ECMAScript 6 中的Set集合
ECMAScript 6 中新增的Set类型是一种有序列表, 其中含有一些相互独立的非重复值。 通过Set集合可以快速访问其中的数据, 更有效地追踪各种离散值。
特征:Set集合里,没有重复的元素。
1、创建Set集合并添加元素
调用new Set()创建Set集合, 调用add()方法向集合中添加元素, 访问集合的size属性可以获取集合中目前的元素数量。
let set = new Set();
set.add(5);
set.add("5");
console.info(set.size); // 2
在Set集合中, 不会对所存值进行强制的类型转换,数字5和字符串"5"可以作为两个独立元素存在。
当然,如果向Set集合中添加多个对象,则它们之间彼此保持独立:
let set = new Set(), key1 = {}, key2 = {};
set.add(key1);
set.add(key2);
console.info(set.size); // 2
由于key1 和key2不会被转换成字符串,因而它们在Set集合中是两个独立的元素;
如果多次调用add()方法并传入相同的值作为参数,那么后续的调用实际上会被忽略:
let set = new Set();
set.add(5);
set.add("5");
set.add(5); // 重复-本次调用直接被忽略
console.info(set.size); // 2
由于第二次传入的数字5是一个重复值,因此其不会被添加到集合中,所以console.info()最后输出的Set集合size属性值为2。
也可以用数组来初始化Set集合, Set构造函数同样会过滤掉重复的值,从而保证集合中的元素各自唯一。
let set = new Set([1,2,3,4,5,5,5,5]);
console.info(set.size); // 5
在这个示例中,我们用一个含重复元素的数组来初始化Set集合,数组中有4个数字5,而在生成的集合中只有一个。
自动去重的功能对于将已有代码或者JSON结构转换为Set集合执行得非常好。
通过has()方法可以检测Set集合中是否存在某个值:
let set = new Set();
set.add(5);
set.add("5");
console.info(set.has(5)); // true
console.info(set.has(6)); // false
待续。。。。。。。。。。。。。。。。。。。。。