JS的Map and Set (映射和集合)

Map

Map 是一个带键的数据项的集合,就好比Object,但是Map允许任何类型的键

  • new Map():创建新的map
  • map.set(key,value):根据键存值
  • map.get(key):根据键返回值,若不存在对应的key 则返回undefined
  • map.has(key):若有key返回true 否则返回false
  • map.delete(key): 删除指定key的值
  • map.size: 返回当前元素个数

举个例子💡:

let map = new Map();

map.set('key', '字符串键'); //字符串键
map.set(0, '数组键'); //数组键
map.set(true, '布尔值'); //布尔值
console.log(map);

返回值:map返回值

如我们所见,与对象不同,键可以为任何类型。

👣注意: map[key]不是使用map的正确方法

  • 虽然map[key]也有效,例如我们设置map[key] = 2,这样会将map视为js的的plain object,因此它暗含了所有相应的限制(无对象键等)
    map的方法:set、get

Map还可以使用对象作为键

let XX = {name:"对象"};

//储存每个用户来访的次数
var viCountMap = new Map();

// XX 是Map的键,123作为值
viCountMap.set(XX,'123');

console.log(viCountMap.get(XX));

Map 迭代

如果要在 map 里使用循环,可以使用以下三个方法:( for…of 在默认情况下使用的就是这个)

  1. map.keys() —— 遍历并返回所有的键(returns an iterable for keys),
  2. map.values() —— 遍历并返回所有的值(returns an iterable for values),
  3. map.entries() —— 遍历并返回所有的实体(returns an iterable for entries)

Object.entries:从对象创建 Map

如果想从一个已有的普通对象来创建一个 Map,那么可以使用内建方法 Object.entries(obj),该返回对象的键/值对数组,该数组格式完全按照 Map 所需的格式。
在这里插入图片描述

Object.fromEntries

在 Map 中存储了一些数据,但是需要把这些数据传给需要普通对象(plain object)的第三方代码。Object.fromEntries就能从map中获取一个普通的对象
在这里插入图片描述

因为 Object.fromEntries 期望得到一个可迭代对象作为参数,而不一定是数组。并且 map 的标准迭代会返回跟 map.entries() 一样的键/值对。因此,我们可以获得一个普通对象(plain object),其键/值对与 map 相同。

Set —— 是一组唯一值的集合。

  • new Set([iterable]) —— 创建 set,可选择带有 iterable(例如数组)来进行初始化。
  • set.add(value) —— 添加一个值(如果 value 存在则不做任何修改),返回 set 本身。
  • set.delete(value) —— 删除值,如果 value 在这个方法调用的时候存在则返回 true ,否则返回 false。
  • set.has(value) —— 如果 value 在 set 中,返回 true,否则返回 false。
  • set.clear() —— 清空 set。
  • set.size —— 元素的个数。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值