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