ES6的set和map集合

ES6的set和map集合


1.set
set集合,本质上就是对数组的一种包装

var s = new Set([3,4,5,6,7]);
    s.add(8)
    s.add(8)
    s.add("8")
    s.add(8)
    s.add("9")
    s.add(9)
    s.add(9)
    s.add(1)
    s.add(3)
    console.log(s)		//Set(10) {3, 4, 5, 6, 7, 8,"8","9",9,1,3}
    console.log(s[0])	//undefined
    console.log(s[1])	//undefined
    console.log(s[2])	//undefined
    console.log(s.length)	//undefined
   //适用for of能遍历出每个值
    // for(var i of s){
    //     console.log(i)	//3,4,5,6,7,8,"8","9",9,1,3
    // }


//其实set集合本质上还是一个map,如下可知set只有值
    for(var i of s.keys()){
        console.log(i);		//3,4,5,6,7
    }
    for(var i of s.values()){
        console.log(i);		//3,4,5,6,7
    }
    for(var i of s.entries()){
        console.log(i);		//[3, 3],[4, 4],[5, 5],[6, 6],[7, 7]
    }

利用set去重

//方法一
	var arr = [1,2,3,4,5,4,3,2,1,1,"1","2","3"];
	console.log(arr);	//[1, 2, 3, 4, 5, 4, 3, 2, 1, 1, "1", "2", "3"]
	var s = new Set(arr);
	console.log(s);		//{1, 2, 3, 4, 5, …}
	var newArr = [];
	for(var i of s){
	    newArr.push(i)
	}
	console.log(newArr)		//[1, 2, 3, 4, 5, "1", "2", "3"]
//方法二
	var arr = [1,2,3,4,5,4,3,2,1,1,"1","2","3"];
	var s = [...new Set(arr)];
	console.log(s);		//[1,2,3,4,5,"1","2","3"]

从上面可以看出set集合是默认去重的,但前提是两个添加的元素严格相等 所以5和"5"不相等,两个new出来的字符串不相等
2.map
Map集合,即映射,添加一个值xx.set(“name”,“admin”),获取某一个元素 map.get(“name”); //admin


     var m = new Map();
     m.set("name","admin");
     m.set("name","root");
     m.set("age",16);
     console.log(m)		//{"name" => "root", "age" => 16},后者会把前者相同的覆盖
     console.log(m.name)	//undefined
     console.log(m[name])	//undefined
     console.log(m.get("name"))		//root


     for(var i of m){
         console.log(i);	//["name", "root"],["age", 16]
         console.log(i[0]); //name,age
         console.log(i[0]); //root,16
     };


     //取得key值
     for(var i of m.keys()){
        console.log(i);		//name,age
     }	
     //取得value值
     for(var i of m.values()){
         console.log(i);	//root,16
     }
     //取得key值和value值
     for(var i of m.entries()){
         console.log(i);	["name", "root"],["age", 16]
     }

另外map还可以将数字字符串数组转为 数字数组 (互换)

	var arr = [1,2,3,4,5]
	var arr1 = arr.map(String);
	console.log(arr1)	//["1", "2", "3", "4", "5"]
	console.log(typeof arr1)	//object
	console.log(arr1.length)	//5
	console.log(arr1[0])	//1	string
	console.log(arr1[3])	//4 string
	
	var arr2 = arr1.map(Number);
	console.log(arr2);		//[1,2,3,4,5]
	console.log(typeof arr2);	//object
	console.log(arr2.length)	//5
	console.log(arr2[0])	//1	number
	console.log(arr2[3])	//4 number

3.set和map的区别
1.map的结构是键值对集合,set只有值
2.set结构是类似于数组结构,但是里面的值都是不允许重复的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值