当前位置:   article > 正文

数据结构-Map_map数据结构

map数据结构

map 是一种典型的字典类型的数据结构
字典: 是用来存储不重复key的Hash结构(对象就是字典类型的数据结构)。不同于集合(Set)的是,字典用的是[键,值]的形式来储存数据的。

JS的对象(Object:{})只能用字符串当作键。这给他的使用带来的很大的限制

为了解决这个问题,ES6提供了Map数据结构,它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键,也就是说,Object结构提供了“字符串-值”的对应,Map结构提供了“值-值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比Object更合适。

let obj1 = {a:1};
let obj2 = {b:2};
let obj = {};
obj[obj1] = 1;
obj[obj2] = 2;
// 因为对象的键只能是字符串,当发现键为对象时会自动调用toString()方法,对象调用toString()后都变成了【object Object】
console.log(obj); // 输出:{ '[object Object]': 2 
console.log(obj1.toString() === obj2.toString()); // true
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 如何创建一个Map
const map = new Map([
	["a",1],
	["b",2]
]);
console.log(map); //  { 'a' => 1, 'b' => 2 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • Map 类的属性
    size属性,相当于数组的length
console.log(map.size); // 2
  • 1
  • Map 类的方法
    1、set(key,value)设置键名key对应的键值为value,然后返回整个Map结构。如果key已经有值,则赋值会被更新,否则就新生成该键。
map.set("c",3).set("d",4);
console.log(map); // { 'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4 }
  • 1
  • 2

2、get(key)get方法读取key对应的键值,如果找不到可以,返回undefined

map.get("a"); // 1;
map.get("e"); // undefined
  • 1
  • 2

3、delete(key)删除某个键,返回布尔值

map.delete("a"); // true
map.delete("a"); // false
  • 1
  • 2

4、has(key)某个键是否存在当前map集合中,返回布尔值

map.has("b"); // true
map.has("f"); // false
  • 1
  • 2

5、clear()清除所有数据,没有返回值

map.clear()
  • 1

6、keys()返回键名的遍历器

map.keys()
  • 1

7、values()返回兼职的遍历器

map.values()
  • 1

8、entries()返回键值对的遍历器

map.entries()
  • 1

9、forEach()使用回调函数遍历每个成员

map.forEach((key,value,map) => {
	console.log(keu + ":" + value); 
})
  • 1
  • 2
  • 3

Map在使用过程中的一些注意事项:

1、map的键为NaN时,在map集合中 NaN === NaN,只会保留最后一个

const map = new Map();
map.set(NaN,2).set(NaN,3);
console.log(map); //  { NaN => 3 }
  • 1
  • 2
  • 3

2、以对象作为map的键时,map集合会比较两个对象的内存地址

const map = new Map();
map.set({},1).set({},2)
console.log(map); // { {} => 1, {} => 2 }
  • 1
  • 2
  • 3

3、map里key的顺序是按照添加书序进行排列的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/570856
推荐阅读
相关标签
  

闽ICP备14008679号