赞
踩
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
}
const map = new Map([
["a",1],
["b",2]
]);
console.log(map); // { 'a' => 1, 'b' => 2 }
size
属性,相当于数组的lengthconsole.log(map.size); // 2
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 }
2、get(key)
get方法读取key对应的键值,如果找不到可以,返回undefined
map.get("a"); // 1;
map.get("e"); // undefined
3、delete(key)
删除某个键,返回布尔值
map.delete("a"); // true
map.delete("a"); // false
4、has(key)
某个键是否存在当前map集合中,返回布尔值
map.has("b"); // true
map.has("f"); // false
5、clear()
清除所有数据,没有返回值
map.clear()
6、keys()
返回键名的遍历器
map.keys()
7、values()
返回兼职的遍历器
map.values()
8、entries()
返回键值对的遍历器
map.entries()
9、forEach()
使用回调函数遍历每个成员
map.forEach((key,value,map) => {
console.log(keu + ":" + value);
})
1、map的键为NaN时,在map集合中 NaN === NaN,只会保留最后一个
const map = new Map();
map.set(NaN,2).set(NaN,3);
console.log(map); // { NaN => 3 }
2、以对象作为map的键时,map集合会比较两个对象的内存地址
const map = new Map();
map.set({},1).set({},2)
console.log(map); // { {} => 1, {} => 2 }
3、map里key的顺序是按照添加书序进行排列的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。