Javascript 中 Map的用法

14 篇文章 0 订阅

Map 在 日常开发中使用频率并不高,在此记录下用法,并比较其与Object的异同,以及在日常开发使用的案例。

定义

Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者基本类型)都可以作为一个键或一个值。

map对象上的方法和属性

属性

  • size
    返回 Map 对象中的键值对数量。

实例方法

  • clear()
    移除 Map 对象中所有的键值对。
  • delete(key)
    移除 Map 对象中指定的键值对,如果键值对存在并成功被移除,返回 true,否则返回 false。
  • get(key)
    返回与 key 关联的值,若不存在关联的值,则返回 undefined。
  • has(key)
    返回一个布尔值,用来表明 Map 对象中是否存在与 key 关联的值。
  • set(key, value)
    在 Map 对象中设置与指定的键 key 关联的值 value,并返回 Map 对象。

迭代方法

以下方法都只能返回迭代对象,并非真正的数组,但是仍然可以使用forof forEach等迭代方法,可以使用Array.from() 转为数组

  • keys()
    返回一个新的迭代对象,其中包含 Map 对象中所有的键,并以插入 Map 对象的顺序排列。
  • values()
    返回一个新的迭代对象,其中包含 Map 对象中所有的值,并以插入 Map 对象的顺序排列。
  • entries()
    返回一个新的迭代对象,其为一个包含 Map 对象中所有键值对的 [key, value] 数组,并以插入 Map 对象的顺序排列。

使用for-of迭代Map

const myMap = new Map()
myMap.set(0, 'zero')
myMap.set(1, 'one')

for (const [key, value] of myMap) {
  console.log(key + ' = ' + value)
}
// 0 = zero
// 1 = one

for (const key of myMap.keys()) {
  console.log(key)
}
// 0
// 1

for (const value of myMap.values()) {
  console.log(value)
}
// zero
// one

for (const [key, value] of myMap.entries()) {
  console.log(key + ' = ' + value)
}
// 0 = zero
// 1 = one

使用forEach() 迭代Map

myMap.forEach(function(value, key) {
  console.log(key + ' = ' + value)
})
// 0 = zero
// 1 = one

Map和数组的关系

  • 使用常规的 Map 构造函数可以将一个二维键值对数组转换成一个 Map 对象
const kvArray = [["key1", "value1"], ["key2", "value2"]];
const myMap = new Map(kvArray);
myMap.get("key1"); // 返回值为 "value1"
  • 使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组
console.log(Array.from(myMap)); // ["key1", "value1"], ["key2", "value2"]];
也可以直接用展开运算符
console.log([...myMap]);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值