ES6之map

构造函数方式创建一个Map实例 参数是一个数组
数组中的每一项也得是一个单独的数组 new Map([[key,value],[key,value]])
单独数组放的是两个值 分别是key和value
在一个对象中 它的属性名必须是字符串,如果写的不是字符串默认转为字符串
而Map可以让除了字符串数据类型之外的其他数据类型作为属性名
但是Map不能放入一个未定义的变量作为属性名
属性名不能重复,重复会导致覆盖

// let map1 = new Map([[1,"good"],[2,"hello"],[3,3],[true,true],["arr",[1,2]],[arr,[1,2]]]);报错arr is not defined
let arr = [1,2];
let map1 = new Map([[1,"good"],[2,"hello"],[3,3],[true,true],["arr",[1,2]],[arr,[1,2]],[9,[1,2]]]);
console.log(map1);//展开后 发现 key的值是 1 2 3 true 1,2 发现并没有被转换为字符串
1.size:键值对个数

修改的方法: get set has delete clear
get(key) 获取value值

console.log(map1.get(true));//true
console.log(map1.get(1));//"good"
console.log(map1.get("arr"));//[1,2]
console.log(map1.get(arr));//[1,2]
console.log(map1.get(9));//[1,2]
2.set(key,value) 设置value值

返回的是修改后的实例 所以可以采用链式写法
如果之前有属性名,set会修改该属性 如果之前没有属性名 set会增加属性

console.log(map1.set(1, 2));//发现1的值从"good"修改为2
console.log(map1.set(false, "mimi"));//增加了false属性 value为"mimi"
3.has(key) 判断key是否有对应的value值

有则返回true 没有返回false

console.log(map1.has(1));//true
4.delete(key) 删除该实参传入的属性

返回值是true 表示删除成功 false表示删除失败

console.log(map1.delete(1));//true
console.log(map1);//key为1的属性已经消失不见
console.log(map1.delete(1000));//false  删除失败 没有key为1000的属性
5.clear 清空

没有返回值 把属性全部清空 没有参数

console.log(map1.clear());  //测试的时候去掉注释即可
console.log(map1);//map(0){}
6.遍历的方法:forEach keys values
map1.forEach((value,index,input)=>{
	console.log(value);
	console.log(index);
	console.log(input);
});//都打印出了  格式如下 "hello" 2 Map(7) {2 => "hello", 3 => 3, true => true, "arr" => Array(2), Array(2) => Array(2), …}
7.keys values 用法类似 需要for of 遍历接口
for(let key of map1.keys()){
	console.log(key);
}//打印出了所有key: 2,3,true,arr[1,2],9,false

for(let value of map1.values()){
	console.log(value);
}//打印出了所有value
8.如何把数组变为Map实例
let ary = ["Aqing","Cyan","Vue","React","Node"];
let map = new Map();
//遍历数组接口 然后解构赋值
for(let [index,value] of ary.entries()){
    map.set(index,value);
}
console.log(map);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值