常用的Map和Set

882 阅读2分钟

一: 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'),删除keykeyStr的数据
    • map.get('keyStr'),获取keykeyStr的数据
    • 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返回集合所包含元素的数量