初识Set
- 在Set里,不能有重复的值。
let set = new Set()
set.add(1)
set.add(1)
console.log(set)
运行结果:
修改一下
let set = new Set()
set.add(1)
set.add('1')
console.log(set)
运行结果:
这里和对象进行一下比较:对象是不区分字符串和数字的,而且后面的会把前面的覆盖。
let obj = {
1: 'hello',
'1': 'dust',
}
console.log(obj);
Set里的增删改查
- 查找:
set.has('dust')
,set.values()
- 增加:
set.add('good')
- 删除:
set.delete('hello')
- 全部删除:
set.clear()
let set = new Set(['hello', 'dust'])
console.log(set.size) //2
console.log(set.delete('hello')) //true
console.log(set.delete('hello123')) //false
console.log(set.has('dust')) //true
set.add('good')
console.log(set.values()) //[Set Iterator] { 'dust', 'good' }
console.log(set.clear()) //undefined
console.log(set.size) //0
类型之间互相帮助才是好兄弟
- 例题:去除字符串内小于5的
let a = new Set('123456789')
let arr = [...a].filter((item) => item < 5)
a = new Set(arr)
console.log(a) //Set(4) { '1', '2', '3', '4' }
- 例题:数组去重
这是我见过的最简单的写法了,震惊啊!
let array = [1, 2, 3, 4, 5, 1, 2, 3, 4]
array = [...new Set(array)]
console.log(array) //[ 1, 2, 3, 4, 5 ]
- 例题:数组合并
let a = [1, 2, 3, 4, 5]
let b = [3, 4, 5, 6, 7, 8]
let set = new Set([...a, ...b])
let res = [...set]
console.log(res)
运行结果:
查看Set里的内容
let set = new Set(['hello', 'dust'])
console.log(set.entries())
运行结果:
Set的遍历
- 用
forEach
的遍历
let set = new Set(['hello', 'dust'])
set.forEach((value,key,set)=>{
console.log(value,key);
})
运行结果:
- 用
for-of
遍历:
for (const value of set) {
console.log(value)
}
运行结果: