SOURCE

let strSet = new Set('hellow word')

// 获取当前 Set 的长度
console.log(strSet.size)
// 结果输出 8 的原因是
// 因为字符串是一个可迭代对象,每次迭代都返回一个字符
// 又因为你 Set 里面的键具有唯一性

console.log(strSet)

// 在Set对象尾部添加一个元素。返回该Set对象。
console.log(strSet.add('!'))

// 移除Set对象内的所有元素。返回 undefined
// console.log(strSet.clear())

// 从 Set 中删除对应的键,
// 如果该键在删除之前存在于 Set 中,删除时则返回 true
// 如果该键在删除之前不存在于 Set 中,删除时则返回 false
console.log(strSet.delete('h'))

// 返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值的[value, value]数组。
// 为了使这个方法和Map对象保持相似, 每个值的键和值相等。
for (let [key, value] of strSet.entries()) {
    console.log(key, value)
}
console.log(strSet.entries())

// 按照插入顺序,为Set对象中的每一个值调用一次callBackFn。如果提供了thisArg参数,回调中的this会是这个参数。
strSet.forEach((key, value) => {
    console.log(key, value, this)
}, [12])

// 判断当前 Set 中,是否有该值的存在
console.log(strSet.has('h'))

// 返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值。
for (let key of strSet.keys()) {
    console.log(key)
}
console.log(strSet.keys())

// 数组去重
const arrSet = new Set([1, 2, 1, 2, null, undefined, null, {a: 1}, undefined, {a: 1}, () => {}, () => {}])
console.log(arrSet)

// Set 转换 Array
const arr1 = [...arrSet]
console.log(arr1)

// Set 转换 Array
const arr2 = Array.from(arrSet)
console.log(arr2)
console 命令行工具 X clear

                    
>
console