一: Map方法
/* ====================================Map方法====================================================== */
// 类对象
// 和对象的区别是:对象的键一定是字符串,Map的键可以说任意类型
let arr1 = [
['name','李白'],
['职业','诗人'],
[false,'是布尔值'],
[[],'是数组']
]
let m = new Map(arr1)
// console.log(m) // Map { 'name' => '李白', '职业' => '诗人', false => '是布尔值', [] => '是数组' }
for (let [key,value] of m) { // 第一个参数是键,第二个是值
// console.log('键:',key)
// console.log('值:',value)
}
注意:
- Map的方法:
map.has(keyStr)是用来判断map中是否存在属性keyStr,返回值是布尔值map.set(keyStr,itemVal),keyStr是属性,itemVal是值,把itemVal存放到map中map.delete('keyStr'),删除key为keyStr的数据map.get('keyStr'),获取key为keyStr的数据map.values(),获取map值得集合,通过[...map.values()]可以值的集合返回给数组
- Map与普通对象的区别
Map属性可以是任意值,普通对象只能是字符串Map区分字符'a'和字母a,普通对象不区分,后面的值会把前面的值覆盖 例如:
// 普通对象 let obj = { a: '我是字母a', 'a': '我是字符串a', 1:'普通员工', 2: '老板', 1: '管理员', '2': 'VIP客户' } console.log(obj) //{1: "管理员",2: "VIP客户",a: "我是字符串a"}map.set(a,'我是字母a')会报错,需要改成map.set('a','我是字符串a')
二:Set()方法
/* ====================================Set方法====================================================== */
// 类数组
// 和数组的区别是:数组是[]包围,Set是{}包围,并且成员唯一
let arr2 = [1,2,3,2,4,2,3,5]
let s = new Set(arr2)
// console.log(s) // Set { 1, 2, 3, 4, 5 }
// 实例1:求交集
let temp21 = [1,2,4,2,3,1,5]
let temp22 = [1,4,4,2,10,1,9]
function bothHas(temp21,temp22) {
let tempArr21 = new Set(temp21)
let tempArr22 = new Set(temp22)
return Array.from(tempArr21).filter(item => {
return tempArr22.has(item)
})
}
// 实例2:求差集
function unBothHas(temp21,temp22) {
let tempArr21 = new Set(temp21)
let tempArr22 = new Set(temp22)
return Array.from(tempArr21).filter(item => {
return !tempArr22.has(item)
})
}
console.log('data2==',bothHas(temp21,temp22))
console.log('data3==',unBothHas(temp21,temp22))
注意:
- Set的方法:
set.add(val),添加值set.delete(val),删除值set.has(val),判断是否有val值
- Set的属性:
set.size返回集合所包含元素的数量