ES6 新特征之Map

ES6引入了Map数据结构,它允许用任意值作为键,解决了Object对象的一些局限。本文详细介绍了Map与Object的区别、创建Map的方式、Map的方法如set、get、has、delete、clear等,以及Map的遍历方法和类型转换,帮助开发者更好地理解和使用Map。
摘要由CSDN通过智能技术生成

ES6 给我们提供了 Map 数据结构,它类似于对象,用于保存键值对。不同的是,Map 中键的范围不限于字符串类型,各种类型的值(包括对象)都可以当作一个键或一个值。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果需要用到“键值对”的数据结构,MapObject 更合适。

Map和Object的区别
  • Object 中的键只能是字符串或者 Symbols 类型,但 Map 中的键可以是任意值。
  • Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
  • Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
  • Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
创建Map

MapES6 提供给我们的构造函数,本质上是键值对的集合。任何值(对象或者原始值) 都可以作为一个键或一个值。

示例:

我们可以通过 Map() 方法来创建一个空 Map

let map = new Map();
console.log(map);  // 输出:Map {}

上述代码中,我们可以在创建时初始化 Map 时,Map 可以接收数组作为参数,并且数组成员也是一个个数组,其中包含两个元素,一个表示键,一个表示值。

示例:

例如下面这个 Map 中有两个键值对:

let map = new Map([["name","xkd"],['age','18']]);
console.log(map);
// 输出:Map { 'name' => 'xkd', 'age' => '18' }

第一个键值对中键为 name,值为 xkd,第二个键值对中键为 age,值为 18

Map的方法和属性

set()方法

set() 方法用于设置所对应的键值对,然后返回整个 Map 结构,如果已经有值,则键值会被更新,否则就会生成新的键。

示例:
let map = new Map();
map.set('name', 'xkd');
console.log(map);  // 输出:Map { 'name' => 'xkd' }

如果要设置多个键值对,则可以执行多次 set 方法。

示例:

例如向 map 中添加三个键值对:

let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);
console.log(map);  
// 输出:Map { 'a' => 1, 'b' => 2, 'c' => 3 }
get()方法

get() 方法用于读取 key 对应的键值,如果找不到 key,则返回 undefined

示例:

下面代码中我们通过 set() 方法为 Map 设置键值对,然后通过 get() 方法获取指定键对应的值:

let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);

console.log(map.get('a'));  // 输出:1
console.log(map.get('b')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值