es6-map

Map

1.map的引入

  • map的键值对的有序列表,键和值都可以为任意类型。
  • 相较于object 字符串-值,object重在表示对象,map重在表达数据结构-字典

2.创建map

let m=new Map()
//初始化
let map=new Map([
['name','zhang'],
['sex','male']
])

3.map使用
在这里插入图片描述

let m=new Map();
let o={p:'hello'}
m.set(o,'content')
m//Map(1) {{…} => "content"}
m.size//1
m.get(o)//"content"
m.has(o)//true

4.map的特点
(1)当键是简单类型的值(数值,字符串,布尔值)只要两个值严格相等,map就认为是同一个键。

const mm = new Map();
mm.set("+0","hello")
mm.set(+0,"hello")
console.log(mm.get(-0))//"hello"

(2)当键是对象的引用时 只有对同一个对象的引用Map才认为是同一个键。

const mm = new Map();
mm.set(["a"], 5);
console.log(mm.get(["a"]));//undefined 因为这两个["a"]不是同一个对象的引用

const k1 = {};
const k2 = {};
mm.set(k1, 100);
mm.set(k2, 200);
console.log(mm.get(k1), mm.get(k2));//100 200

5.map的遍历
在这里插入图片描述

 const map = new Map([
    ["F", "no"],
    ["T", "yes"]
  ]);
  for (let [key, value] of map.entries()) {
    console.log(key, value);
  }//F no T yes
  for (let [key, value] of map) {
    console.log(key, value);
  }F no T yes

6.map可以和其他数据进行转化
(1)map转化为数组

let map=new Map([
    ['name','zhang'],
    ['title','Author']
]);
console.log([...map])//[Array(2), Array(2)]0: (2) ["name", "zhang"]1: (2) ["title", "Author"]

(2)数组转化为map

let map=new Map([
    ['name','zhang'],
    ['title','Author']
]);

(3)map转化为对象
使用特殊函数

let map=new Map([
    ['name','zhang'],
    ['title','Author']
]);
 function strMapToObj(strMap) {
    let obj = Object.create(null);
    for (let [k, v] of strMap) {
      obj[k] = v;
    }
    return obj;
  }
  let obj = strMapToObj(map);

(4)对象转化为map
使用特殊函数
在这里插入图片描述
(4)map转化为json

  • map键名都是字符串的情况
    先将map转化为对象,再将转化后的对象使用JSON.stringify()方法转化为json
    在这里插入图片描述
  • map键名有非字符串的情况
    先将map转化为数组,再转化为json
    在这里插入图片描述

(5)json转化为map
所有键名都是字符串的情况下
先将json转化为对象使用json.parse()方法
再将对象转化为map 见(4)
在这里插入图片描述


7.WeakMap
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值