一.Map结构数据
1. 传统对象键名必须为字符串
let obj = {a:1, 666:2}; console.log(666);-->报错
2.map结构数据是一种“值-值”对应关系
let m = new Map();
m.set(123,'abc');
console.log(m.get(123));
--> abc
二.Map结构数据初始化和方法
1. 可直接传入键值对二维数组
2. get()-获得数据
let m = new Map([
[123,'abc'],
['a',{x:1,y:2}],
[3>1,666]
]);
获得数据
console.log(m.get(true));
-->返回666
3. has()-查找有没有字符串对应的值
接上面例子
m.has('a');-->true
4. delete()-删除
m.delete(123);
三.map结构对象键名特点
1. 传址特点--对象作为键名,传输的是地址,所以下例中的两个{x:1}虽然长相一样,但实际值不同(存储在堆内存的两个位置)
let m = new Map([
[123,'abc'],
[{x:1},'cdf'],
]);
console.log(m.get({x:1}));
-->undefined
可以修改成下面形式
let obj = {x:1};
let m = new Map([
[123,'abc'],
[obj,'cdf'],
]);
console.log(m.get(obj));
-->cdf
四.map结构遍历
1. keys()-->将键名都取出来,组成一个可遍历的数据集合
let m = new Map([
[123,'abc'],
['a','hahaha'],
[1>2,'baidu.com']
]);
for(let x of m.keys()){
console.log(x);
}
-->123 a false
2. values()
let m = new Map([
[123,'abc'],
['a','hahaha'],
[1>2,'baidu.com']
]);
for(let x of m.values()){
console.log(x);
}
-->abc hahaha baidu.com
3. entries()
let m = new Map([
[123,'abc'],
['a','hahaha'],
[1>2,'baidu.com']
]);
for(let x of m.entries()){
console.log(x);
}
-->
Array[123,'abc']
Array['a','hahaha']
Array[false ,'baidu.com]
4. forEach()--第一个参数代表键值,第二个参数代表键名
let m = new Map([
[123,'abc'],
['a','hahaha'],
[1>2,'baidu.com']
]);
m.forEach(x=>{
console.log(x);
})
-->返回abc hahaha baidu.com
m.forEach((x,y)=>{
console.log(x,y);
})
-->返回
abc 123
hahaha a
baidu.com false