Set 对象
Set 对象是值的集合, Set中的元素只会出现一次,即 Set 中的元素是唯一的。
创建一个Set对象 Set()
Set 实例属性
Set.prototype.size 返回 Set 对象中的值的个数
Set实例方法
Set.prototype.add(value) 在Set 对象尾部添加一个元素。返回该Set 对象。
Set.prototype.clear() 移除Set 对象内的所有元素。
Set.prototype.delete(value) 移除Set 的中与这个值相等的元素,返回 Set.prototype.has(value)在这个操作前会返回的值(即如果该元素存在,返回true,否则返回false)。
Set.prototype.has(value) 返回一个布尔值,表示该值在Set 中存在与否。
Set.prototype.entries() 返回一个新的迭代器对象,该对象包含Set 对象中所有元素的值的[value, value]
数组。为了使这个方法和Map对象保持相似, 每个值的键和值相等。
Set.prototype.values() 返回一个新的迭代器对象,该对象包含Set 对象中所有元素的值。
Set.prototype.keys() 与values()方法相同,返回一个新的迭代器对象,该对象包含Set 对象中所有元素的值。
Set.prototype.forEach(callBackFn) Set对象的遍历,为Set对象中的每一个值调用一次callBackFn。
Set.prototype.forEach(callBackFn) Set对象的遍历,为Set对象中的每一个值调用一次callBackFn。
实例:
let mySet = new Set([ 2, 3 ]);
mySet.add(1); // Set [ 2,3,1]
mySet.size; // 3
mySet.has(1); // true
mySet.has(5); // false
mySet.delete(3); // true
mySet.delet(3); // false 3元素已经被移除
mySet.size; // 2
Set的迭代:
for (let item of mySet.keys()) { console.log(item); } // 2 // 1
for (let item of mySet.values()) { console.log(item); } // 2 // 1
for (let item of mySet.entries()) { console.log(item); } // [2,2] // [1,1]
Set 结构的实例默认可遍历,默认遍历器生成函数就是它的values方法
Set.prototype[Symbol.iterator] === Set.prototype.values
故可以省略values方法直接使用for...of遍历Set
for (let item of mySet.keys()) { console.log(item); } // 2 // 1
数组去重
let arr = [1,2,3,5,4,3];
let mySet = new Set(arr);
[...mySet];// [1.2.3,5,4]
或者使用 Array.form(mySet); // [1.2.3,5,4]