Map

Set类似于数组,Map类似于对象。

为什么要有Map,使用对象的时候,key(键)只能是基本类型值(字面量类型,多数是字符串),Map的key可以是任意类型

基本使用

var mapObj = new Map();
mapObj.set("a",1)
console.log(mapObj);

 

 

我们可以看到Map有key,并且可以单独设置key,Set中的key和value是相同,上面代码中的第一个参数a是定义对象的key,第二个参数1是定义对象value

Map方法初始化赋值可以连续打点(类似于jquery的方法)

 

 

 Map的初始化赋值可以是数组但不可以是对象

var map = new Map([
  ['name', '小明'],
  ['sex', '']
]);

console.log(map.size )
console.log(map.has('name'))
console.log(map.get('name')) 
console.log(map.has('sex'))
console.log(map.get('sex') )

 

注意:Map方法初始化对象的赋值只能通过set方法来设置,不能初始化结构赋值

下面的初始化赋值的写法是错误的

var mapobj = new Map({a:100});

 

 Map的key可以是任意类型

可以设置Map的key为任意类型

var mapObj = new Map();

var objKey = {
  "a":1,
  "b":2
}
mapObj.set(objKey,"2")
console.log(mapObj);

 

 如果对同一个键多次赋值,后面的值将覆盖前面的值。

let map = new Map();
map.set(1, 'a').set(1, 'b');
console.log(map.get(1))

 

Map的方法和属性

Map集合也有自己的size属性

let map = new Map();
map.set('obj', true);
map.set('obj2', false);
console.log(map.size) 

 

 Map的方法大多数和Set是相同的

set方法表示设

内部一共有两个参数,第一个参数表示设置对象的key,第二个参数表示设置对象的value

get方法表示获取值

内部的参数表示要获取的对象的key

var map = new Map();
map.set("a","1");
console.log(map.get("a"));

 

 delete表示的是删除

参数是要删除对应的key

let map = new Map();
map.set("a","1");
map.delete("a")
console.log(map);

 

has表示内部是否有对应的对象

let map = new Map();
map.set("a","1");
console.log(map.has("a"));

 

 clear方法表示清空

let map = new Map();
map.set("a","1");
map.clear()
console.log(map);

 

 Map的循环方法

循环方法和set是一样的,都支持for..of,forEach,entries

for...of循环

let map = new Map();
map.set("a","1");
map.set("b","2");

for(let item of map) {
  console.log(item);
}

 

 遍历keys

let map = new Map();
map.set("a","1");
map.set("b","2");

for(let item of map.keys()) {
  console.log(item)
}

 

 遍历values

let map = new Map();
map.set("a","1");
map.set("b","2");

for(let item of map.values()) {
  console.log(item)
}

posted @ 2021-10-26 09:58  keyeking  阅读(86)  评论(0编辑  收藏  举报