Map、Set-js

本文详细介绍了JavaScript中的Map和Set数据结构,包括创建、存取值、删除、遍历以及转换操作。通过示例代码展示了如何使用Map的set、get、delete方法,以及Set的add、size属性和遍历功能。还探讨了Map和Set在数组转换及集合运算中的应用,如交集和并集的构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值