{ let list = new Set() // 声明一个 set // 往 set 增加元素用 add() 方法 list.add(5) list.add(7) console.log(‘size‘, list.size) // 这里长度用 size 而不能用 length let arr = [1,2,3,4,5] let list2 = new Set(arr) // Set 把数组 arr 转化成一个集合了, 成为一个 Set 数据类型 console.log(‘size‘, list2.size) // 添加一个重复的元素是不会生效的, 这个特性可以用来数组去重 list2.add(1) console.log(list2) // Set(5) {1, 2, 3, 4, 5} }
使用 Set() 数组去重
PS: 不会做数据类型的转换, 也就是说 1 和 ‘1‘ 不会被去重
{ let arr = [1,2,3,4,1,2] let list = new Set(arr) console.log(list) // Set(4) {1, 2, 3, 4} let arr2 = [1,2,3,4,‘1‘,2] let list2 = new Set(arr2) console.log(list2) // Set(5) {1, 2, 3, 4, "1"} }
Set() 的方法 add() has() delete() clear()
{ let arr = [‘add‘, ‘delete‘, ‘clear‘, ‘has‘] let list = new Set(arr) // 使用 add() 添加一个元素 list.add(‘new‘) console.log(list) // Set(5) {"add", "delete", "clear", "has", "new"} // 使用 delete() 删除一个元素 list.delete(‘new‘) console.log(list) // Set(4) {"add", "delete", "clear", "has"} // 检测 set 集合中有没有指定元素 console.log(list.has(‘add‘)) // true // 清空 set 集合 list.clear() console.log(list) // Set(0) {} }
Set 集合的遍历读取
{ let arr = [‘add‘, ‘delete‘, ‘clear‘, ‘has‘] let list = new Set(arr) // set 集合的 key 和 value 是一样的 for (let key of list.keys()) { console.log(key) // add delete clear has } for (let value of list.values()) { console.log(value) // add delete clear has } list.forEach(item => { console.log(item) // add delete clear has }) }
{ let weakList = new WeakSet() let arg = {} weakList.add(arg) // weakList.add(2) // 报错, 因为不是对象 console.log(‘weakList‘, weakList) // for (let v of weakList) { // console.log(v) // 报错, 不能遍历 // } }
map 的第一种定义方式
{ let map = new Map() let arr = [‘123‘] // map 添加元素是用 set map.set(arr, 456) // map 是可以用任何数据类型做 key 的 console.log(‘map‘, map) // Map(1) {Array(1) => 456} // map 取值用 get console.log(map.get(arr)) // 456 }
map 的第二种定义方式
接受一个数组, 数组的每一个元素还是数组, 必须是这种格式
{ let map = new Map([[‘a‘, 123], [‘b‘, 456]]) console.log(map) // Map(2) {"a" => 123, "b" => 456} // size 检查元素个数 console.log(map.size) // 2 // 删除元素 map.delete(‘a‘) console.log(map) // Map(1) {"b" => 456} // 清空 clear map.clear() console.log(map) // Map(0) {} }
map 的遍历和 set 用法是一样的, 不在演示
原文:https://www.cnblogs.com/helzeo/p/11815189.html