文章目录
- [1 Set结构](#1 Set结构)
-
- [1.1 初识Set](#1.1 初识Set)
- [1.2 实例的属性和方法](#1.2 实例的属性和方法)
- [1.3 遍历](#1.3 遍历)
- [1.4 复杂数据结构去重](#1.4 复杂数据结构去重)
- [2 Map结构](#2 Map结构)
-
- [2.1 初识Map](#2.1 初识Map)
- [2.2 实例的属性和方法](#2.2 实例的属性和方法)
- [2.3 遍历](#2.3 遍历)
1 Set结构
它类似于数组,但成员的值都是唯一的,没有重复的值。
1.1 初识Set
js
let s1 = new Set([1, 2, 3, 2, 3])
console.log(s1)
let s2 = new Set()
s2.add(1)
s2.add(2)
s2.add(3)
console.log(s2)
1.2 实例的属性和方法
- size:返回Set实例的成员总数。
- Set.prototype.add(value):添加某个value。
- Set.prototype.delete(value):删除某个value,返回一个布尔值,表示删除是否成功。
- Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
- Set.prototype.clear():清除所有成员,没有返回值。
1.3 遍历
- Set.prototype.keys():返回键名的遍历器。
- Set.prototype.values():返回键值的遍历器。
- Set.prototype.entries():返回键值对的遍历器。
- Set.prototype.forEach():遍历每个成员。
1.4 复杂数据结构去重
js
function uni(arr) {
let res = new Set()
return arr.filter(item => {
let id = JSON.stringify(item)
if (res.has(id)) {
return false
} else {
res.add(id)
return true
}
})
}
var arr = [1, 2, 3, "data", {name: "kerwin"}, {name: "kerwin"}, [1, 2], [3, 4], [3, 4]]
console.log(uni(arr))
2 Map结构
类似于对象,也是键值对的集合,但是"键"的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
2.1 初识Map
js
let m1 = new Map()
m1.set("name","kerwin")
m1.set({a:1},"大连")
console.log(m1)
let m2= new Map([
["name","kerwin"],
[{a:1},"大连"]
])
console.log(m2)
2.2 实例的属性和方法
- size:返回Map结构的成员总数。
- Map.prototype.set(key,value):添加key对应得value,返回Map结构本身。
- Map.prototype.get(key):获取key对应的value
- Map.prototype.delete(key):删除某个键(键名+键值)
- Map.prototype.has(key):某个键是否在当前Map对象之中。
- Map.prototype.clear():清除所有成员,没有返回值。
2.3 遍历
- Map.prototype.keys():返回键名的遍历器。
- Map.prototype.values():返回键值的遍历器。
- Map.prototype.entries():返回所有成员的遍历器。
- Map.prototype.forEach():遍历Map的所有成员。