1.Map基本使用
1.new Map(参数) 创建新的 Map 对象。参数是个二维键值对数组
2.set(key,value) 为 Map 对象中的键设置值。
3.get(key) 获取 Map 对象中键对应的值,未找到键返回undefined
4.entries() 返回 Map 对象中键/值对的数组。
5.keys() 返回 Map 对象中键的数组。
6.values() 返回 Map 对象中值的数组。
7.clear() 删除 Map 中的所有元素。
8.delete() 删除由键指定的元素。
9.has() 如果键存在,则返回 true。
10.size属性 Map 键值对个数
2.Map和对象区别
1.Map对象存有键值对,其中的键可以是任何数据类型。而对象的只能是字符串或者 Symbols
let a={name:"xm",age:19}
let b={math:100,score:200}
let map=new Map([[a,b]]);
map.set(function(){},b)
map.set(1,b)
map.set("1",b)
map.set([],b)
console.log(map);
可以看到键任何数据类型都可以
如果用object的话
let obj={a:b,1:b,"1":b,}
console.log(obj);
如果用函数和数组作为键直接报错。就没写上
如果对象作为键,对象名变成了字符串。
如果1作为键,会被转成字符串"1",被后面一个键"1"覆盖
注意如果键是个引用类型
console.log(map.get({name:"xm",age:19}));
会输出undefined
2.Map有排序,对象没排序
上面的例子可以看到Map所有键值对都有下标,顺序是加入顺序
但是对象没有
3.Map有size属性可以知道多少键值对,对象没有直接方法
let obj={1:2}
console.log(Object.keys(obj).length); //1
1.Set基本使用
new Set(参数) 创建新的 Set 对象。 如果参数是个可迭代对象,会去重并加入set
add() 向 Set 添加新元素。
clear() 从 Set 中删除所有元素。
delete() 删除由其值指定的元素。
entries() 返回 Set 对象中值的数组。
has() 如果值存在则返回 true。
forEach() 为每个元素调用回调。
keys() 返回 Set 对象中值的数组。
values() 与 keys() 相同。
size 返回元素计数。
2.Set与数组,Map区别
1.每个值在 Set 中不重复,
2.Set中的values()和keys()输出一样
3.Set中的entries,输出键值对,键和值一样
3.Map和Set转化为数组
Map
1 Array.from(Map) Map对象转化为 二维键值对数组
let map =new Map([[1,2]])
console.log(map); //0: {1 => 2}
console.log(Array.from(map)); //[1, 2]
因为keys(),values()都返回的迭代器,所以可以转化成keys数组和values数组
console.log(Array.from(map.keys()));//[1]
2. …展开语法
console.log([...map]); //[1, 2]
Set
1.Array.from(Set) Set对象转化为一维数组
let set =new Set([1,2])
console.log( Array.from(set));// [1, 2]
2. …展开语法
与Map完全一致