// map 类似于object 键值对
var m = new Map();
m.set('key','value');
m.set('name','jindu').set('a','a');
var o = {id:100};
m.set(o,'abc');
//另一种添加方式
let m1 = new Map([['a',1],['b',2],['c',3],['id',4]]);
// Map实例的属性和方法
//1. size属性
const m = new Map();
m.set('a','a').set('b','b');
m.size //2
//2. set(key, value)
const m = new Map();
m.set('qq', '2429462491') // 键是字符串
m.set(100, 'jindu') // 键是数值
m.set(undefined, 'value') // 键是 undefined
//3. get(key) 读取`key`对应的键值,如果找不到`key`,返回`undefined`。
const m = new Map();
var a = {id:2};
m.set(a,'value');
m.set('name','jindu');
m.get(a); //'value' 通过变量a来获取
m.get('name'); //jindu 通过'name'属性获取
//4. has(key) 返回一个布尔值,表示某个键是否在当前 Map 对象之中。
const m = new Map();
var a = {id:2};
m.set(a,'value');
m.set('name','jindu');
m.has('name') //true
m.has('a') //false
m.has(a) //true
//5. delete(key) 删除某个键,返回`true`。如果删除失败,返回`false`。
const m = new Map();
var a = {id:2};
m.set(a,'value');
m.set('name','jindu');
m.delete('name')
m.has('name') //false
//6. clear() 清除所有成员,没有返回值。
const m = new Map();
var a = {id:2};
m.set(a,'value');
m.set('name','jindu');
m.clear();
// Map遍历方法
for(let [k,v] of m1){
console.log(k);
console.log(v);
};
//keys() values() entries()
for(let k of m1.keys()){
console.log(k);
};
for(let v of m1.values()){
console.log(v);
};
//map类型转换
//1、对象转数组
var obj = {'a':1,'b':2,'c':3};
Object.keys(obj); //["a", "b", "c"]
Object.values(obj); //[1, 2, 3]
//2、map类型转数组
let m1 = new Map([['a',1],['b',2],['c',3],['id',4]]);
[...m1.keys()]; //["a", "b", "c", "id"]
[...m1.values()];
[...m1]; //[['a',1],['b',2],['c',3],['id',4]]
//3、map转对象object
let m2 = new Map([['a',1],['b',2],['c',3],['id',4]]);
var o2 = {};
for(let [k,v] of m2){
o2[k] = v;
};
console.log(o2) //{a: 1, b: 2, c: 3, id: 4}
//4、对象object转map
var obj = {'a':1,'b':2,'c':3};
let m3 = new Map();
for(let k in obj){
m3.set(k,obj[k]);
};
console.log(m3);
//二种方式
let m4 = new Map(Object.entries(obj));
网友评论