文章目录
Map
1、创建Map
var m1 = new Map([
["age", 100],
["name", "hll"]
])
console.log(m1, typeof m1);
结果:
2、存值set、取值get
var m1 = new Map()
m1.set("age", 20)
// key可以为任意数据类型
m1.set(20, 100)
var temp = [100, 200]
//引用数据作为map的key时 取值也必须是同一个引用
m1.set(temp, 200)
console.log(m1);
console.log(m1.get(20));
console.log(m1.get(temp));
//引用数据作为map的key时 取值也必须是同一个引用
//引用数据作为map的key时 不能直接用引用数据去取 接下行
// m1.get([199,424]) 这样写是错误的
结果:
3、delete删除
var m1 = new Map()
var temp = [100]
m1.set(temp, 400)
temp.push(200) //添加数据,temp改变了
//引用数据作为map的key时 取值也必须是同一个引用 与数据改变没关系
console.log(m1.get(temp)); //400
console.log(m1.size); //保存了几个数据
var re3 = m1.delete(temp)
console.log(re3, 11);
console.log(m1.size); //保存了几个数据
//删数据
// m1.delete("hello")
//清空
// m1.clear()
结果:
4、遍历Map
var m1 = new Map()
m1.set(1, 200)
m1.set("hello", 300)
m1.set(null, 400)
m1.forEach(function (el) { //这个foreach与数组那个不同
console.log(el) //遍历出value值
})
结果:
5、数组转Map Map转数组
// 数组转Map 二维数组
var arr = [
[1, 100],
[2, 200],
[3, 300]
]
var m1 = new Map(arr)
console.log(m1);
// Map(3) {1 => 100, 2 => 200, 3 => 300}
//Map转数组
var arr1 = Array.from(m1)
console.log(arr1, 1, arr[1][0] == arr1[1][0]); //true
结果:
Set
1、创建Set
var arr = [10, 20]
var s1 = new Set(arr)
console.log(s1);
2、存值add
var arr = [10, 20]
var s1 = new Set(arr)
console.log(s1);
s1.add(90)
s1.add(1000)
s1.add(90) //重复添加不算
s1.add([100])
s1.add([100]) //引用数据不会重复
s1.add([100])
console.log(s1, s1.size);
结果:
3、取值
//集合set存储数据
var arr = [10, 20]
var s1 = new Set(arr)
console.log(s1);
s1.add(90)
s1.add(1000)
s1.add(90) //重复添加不算
s1.add([100])
s1.add([100]) //引用数据不会重复
s1.add([100])
console.log(s1, s1.size);
// 取数据
s1.forEach(function (el) {
console.log(el);
})
//取数据
var s2 = new Set([100, 24, 535, 435])
s2.forEach(function (el) {
console.log(el, 111);
})
var s3 = new Set([...s1, ...s2]) //...s1是取出所有元素
console.log(s3);
结果:
4、数组转Set、Set转数组
var arr = [189, 243, {
age: 43434
}, {
efb: "34"
}]
var s1 = new Set(arr)
console.log(s1);
//集合转数组
var arr2 = Array.from(s1)
console.log(arr2, arr[2] == arr2[2]);
结果:
5、交集
var arr = [10, 20, 30, 10, {}]
var arr2 = [100, 200, 30, 10]
var s2 = new Set(arr.filter(function (el) {
if (arr2.includes(el)) {
return el
}
}))
console.log(s2)
结果:
6、并集
var arr = [10, 20, 30, 10, {}]
var arr2 = [100, 200, 30, 10]
var s1 = new Set([...arr, ...arr2])
console.log(s1)
结果: