ES6中Map类型的基本使用和常见方法

1.Map的基本使用

另外一个新增的数据结构是Map,用于存储映射关系(键值对)。

那么在之前可以使用对象来存储映射关系,它们有什么区别?

  • 对象存储映射关系只能用字符串(ES6中新增了Symbol)作为属性名(key),即便使用了别的类型作为key,最终还是被转换成字符串类型。
  • 某些情况下,希望可以通过其他类型作为key,比如对象,这个时候会自动将对象转成字符串来作为key,但是Map可以实现使用其他类型作为key。
// Map中不传入任何值
const obj1 = {
    
     name: 'why' }
const obj2 = {
    
     name: 'kobe' }

const map = new Map()
map.set(obj1, 'aaa')
map.set(obj2, 'bbb')
map.set(1,'ccc')
console.log(map);

在这里插入图片描述

// Map中传入数组
const obj1 = {
    
     name: 'why' }
const obj2 = {
    
     name: 'kobe' }

// 传入数组 必须是这种格式的
const map2 = new Map([[obj1, "aaa"], [obj2, "bbb"], [2, "ccc"]])
console.log(map2);

在这里插入图片描述

2.Map的常见的属性和方法

1)常见的属性
size:返回Map中元素的个数。

2)常见的方法
① set(key , value): 在Map中添加key , value,并且返回整个Map对象。

const obj1 = {
    
     name: 'why' }
const obj2 = {
    
     name: 'kobe' }

// 传入数组 必须是这种格式的
const map2 = new Map([[obj1, "aaa"], [obj2, "bbb"], [2, "ccc"]])
map2.set("whu", "eee")
console.log(map2);

在这里插入图片描述
② get(key) : 根据key获取Map中的value。

console.log(map2.get("whu"));

③ has(key) : 判断是否包括某一个key,返回Boolean类型。

console.log(map2.has("whu"));   // true

④ delete(key): 根据key删除一个键值对,返回Boolean类型。

map2.delete("whu")
console.log(map2);

⑤ clear(): 清空所有的元素。

map2.clear()

⑥ forEach(callback, [, thisArg]) :通过forEach遍历Map。

const obj1 = {
    
     name: 'why' }
const obj2 = {
    
     name: 'kobe' }

// 传入数组 必须是这种格式的
const map2 = new Map([[obj1, "aaa"], [obj2, "bbb"], [2, "ccc"]])
map2.set("whu", "eee")
map2.forEach((item, key) => {
    
    
    // item是值
    console.log(item,key);
})

还可以使用for…of来遍历。

for (const item of map2) {
    
    
    // item是一个数组
    console.log(item[0],item[1]);
}

因为for…of中的item是数组,因此可以直接解构使用。


for (const [key, value] of map2) {
    
    
    console.log(key,value);
}

猜你喜欢

转载自blog.csdn.net/qq_44482048/article/details/129172439