1.set的创建 1.1set和数组的差别在于不能有重复的数据,否则会覆盖掉, 而普通对象的键名不管是什么类型最后都会转为字符串
let set = new Set([1,1]) console.log(set) //Set(1) {1}2.set的基本使用 2.1增加 一次只能添加一个
let set = new Set([1]) set.add(2,3,4,5) console.log(set) //[1,2]2.2获取元素数量
let set = new Set([1]) set.add(2,3,4,5) console.log(set.size) //22.3检测某个元素是否存在
let set = new Set([1]) set.add(2,3,4,5) console.log(set.has(10)) //false2.4删除某个元素 删除成功返回true,失败返回false
let set = new Set([1]) set.add(2,3,4,5) console.log(set.delete(2))//falsej2.5清空
let set = new Set([1]) set.add(2,3,4,5) console.log(set.clear(2))3.类型转换 3.1通过将数组转为set来完成去重
let arr = [1,2,3,4,5,4,3,2,1] let newArr = [...new Set(arr)] console.log(newArr) //[1,2,3,4,5]4.set遍历 4.1forEach 因为set是没有索引的,所以value和index是一样的
let set = new Set([1,2,3,4,5]) set.forEach(function(value,index,set){ console.log(value) console.log(index) console.log(set) })4.2 forof
let set = new Set([1,2,3,4,5]) for (const item of set) { console.log(item) //1,2,3,4,5 }5.使用set处理网站关键字
<input type="text" name="test"> <ul></ul> <script> let obj = { data: new Set(), keyword(word){ this.data.add(word) }, show(){ let ul = document.querySelector('ul') ul.innerHTML = '' for (const item of this.data) { ul.innerHTML += `<li>${item}</li>` } } } let input = document.querySelector("[name='test']") input.addEventListener('blur', function(){ obj.keyword(this.value) obj.show() }) </script>6.0 WeakSet的创建 WeakSet和Set类似,但里面存的只能是引用类型,而且是弱引用类型,就是当内存中的数据被删除了,WeakSet还会留着空壳,但没有数据。 由于是弱引用,所以想什么遍历之类的方法都不能使用。
let a = {name: '张三'} let weak = new WeakSet() weak.add(a) console.log(weak)