共计 2437 个字符,预计需要花费 7 分钟才能阅读完成。
“Code tailor”,为前端开发者提供技术相干资讯以及系列根底文章,微信关注“小和山的菜鸟们”公众号,及时获取最新文章。
前言
在开始学习之前,咱们想要告诉您的是,本文章是对阮一峰《ECMAScript6 入门》一书中 “Set 和 Map” 章节的总结,如果您已把握上面常识事项,则可跳过此环节间接进入题目练习
- 什么是 Set 和 Map?
- Set 和 Map 的罕用办法
如果您对某些局部有些忘记,👇🏻 曾经为您筹备好了!
学习链接
set 和 map 的学习
汇总总结
概念
Set
对象是值的汇合,你能够依照插入的程序迭代它的元素。Set
中的元素只会呈现一次,即Set
中的元素是惟一的。
Map
对象保留键值对,并且可能记住键的原始插入程序。任何值 (对象或者原始值) 都能够作为一个键或一个值。
set 和 map 的罕用办法
Set
- Set()
创立一个新的
Set
对象。
let mySet = new Set()
- Set.prototype.size
返回
Set
对象中的值的个数
let mySet = new Set()
mySet.add(1) // Set [1]
mySet.add(5) // Set [1, 5]
mySet.size // 2
- Set.prototype.add(value)
在
Set
对象尾部增加一个元素。返回该Set
对象
let mySet = new Set()
mySet.add(1) // Set [1]
mySet.add(5) // Set [1, 5]
- Set.prototype.clear()
移除
Set
对象内的所有元素。
let mySet = new Set()
mySet.add(1) // Set [1]
mySet.add(5) // Set [1, 5]
mySet.clear()
mySet.size // 0
- Set.prototype.delete(value)
移除
Set
中与这个值相等的元素,返回Set.prototype.has(value)
在这个操作前会返回的值(即如果该元素存在,返回true
,否则返回false
)。Set.prototype.has(value)
在尔后会返回false
。
let mySet = new Set()
mySet.add(1) // Set [1]
mySet.add(5) // Set [1, 5]
mySet.delete(5) // true, 从 set 中移除 5
mySet.size // 1
- Set.prototype.has(value)
返回一个布尔值,示意该值在
Set
中存在与否。
let mySet = new Set()
mySet.add(1) // Set [1]
mySet.add(5) // Set [1, 5]
mySet.has(1) // true
mySet.has(3) // false
mySet.delete(5) // true, 从 set 中移除 5
mySet.has(5) // false, 5 曾经被移除
mySet.size // 1, 刚刚移除一个值
Map()
- Map()
用于创立
Map
对象
let myMap = new Map()
- Map.prototype.size
返回
Map
对象的键 / 值对的数量。
let myMap = new Map()
let keyString = 'a string'
myMap.set(keyString, "和键'a string'关联的值")
myMap.size //1
- Map.prototype.clear()
移除
Map
对象的所有键 / 值对。
myMap.clear()
- Map.prototype.delete(key)
如果
Map
对象中存在该元素,则移除它并返回true
;否则如果该元素不存在则返回false
。随后调用Map.prototype.has(key)
将返回false
let keyString = 'a string'
myMap.set(keyString, "和键'a string'关联的值")
myMap.delete('a string') //true
myMap.delete('xhs') //false(因为没有 set)
- Map.prototype.get(key)
返回键对应的值,如果不存在,则返回
undefined
。
myMap.get(keyString) // "和键'a string'关联的值"
- Map.prototype.has(key)
返回一个布尔值,示意
Map
实例是否蕴含键对应的值。
myMap.has('a string') // true
- Map.prototype.set(key, value)
设置
Map
对象中键的值。返回该Map
对象。
myMap.set(keyString, "和键'a string'关联的值")
let myMap = new Map()
let keyString = 'a string'
myMap.set(keyString, "和键'a string'关联的值")
myMap.size //1
myMap.get(keyString) // "和键'a string'关联的值"
myMap.has('a string') // true
myMap.delete('a string') //true
myMap.clear()
题目自测
一:Map 和 Set 的区别
二:求数组的并集与交加
题目解析
一、
Answer:
Set 对象是值的汇合,Map 对象是键值对的汇合 Set 对象的元素只会呈现一次,即 Set 中的元素是惟一的。Map 对象因为如果有反复的键值,则前面的会笼罩后面的,相对来说键也是惟一的
二、
Answer:
const array1 = [1, 3, 5, 7, 9]
const array2 = [2, 3, 4, 5, 6]
const s1 = new Set([...array1, ...array2]) // 并集
let Union = [...s1]
console.log(Union) // [1, 3, 5, 7, 9, 2, 4, 6]
const s2 = new Set(array1) // 交加
const Intersection = array2.filter((item) => s2.has(item))
console.log(Intersection) // [3, 5]