JavaScript--Map的使用(键值对)

Map是一组键值对的结构,用于解决以往不能用对象做为键的问题

  • 具有极快的查找速度
  • 函数、对象、基本类型都可以作为键或值

声明定义

可以接受一个数组作为参数,该数组的成员是一个表示键值对的数组。接收数组的前两个参数,一个为键一个为值

let m = new Map([
  ['houdunren', '后盾人'],
  ['hdcms', '开源系统']
]);

console.log(m.get('houdunren')); //后盾人

添加元素要使用使用set 方法,支持链式操作

let map = new Map();
let obj = {
  name: "后盾人"
};

map.set(obj, "houdunren.com").set("name", "hdcms");

console.log(map.entries()); //MapIterator {{…} => "houdunren.com", "name" => "hdcms"}

对于键是引用类型的Map, 键保存的是内存地址,值相同但内存地址不同的视为两个键

例如,这里的arr和[“后盾人”] 的值是相同的,但内存地址不同

let arr = ["后盾人"];
const hd = new Map();
hd.set(arr, "houdunren.com");
console.log(hd.get(arr)); //houdunren.com
console.log(hd.get(["后盾人"])); //undefined

数组转换

可以使用展开语法 或 Array.form 静态方法将Map类型转为数组,这样就可以使用数组处理函数了

let hd = new Map([["houdunren", "后盾人"], ["hdcms", "开源系统"]]);

console.log(...hd); //(2) ["houdunren", "后盾人"] (2) ["hdcms", "开源系统"]
console.log(...hd.entries()); //(2) ["houdunren", "后盾人"] (2) ["hdcms", "开源系统"]
console.log(...hd.values()); //后盾人 开源系统
console.log(...hd.keys()); //houdunren hdcms

增删改查

 let map=new Map()
map.set('name','xz');
map.set('age',18)
// console.log(map.get('name'));//xz
// console.log(map); //Map(2) {'name' => 'xz', 'age' => 18}
// console.log(map.age);//undefined

//增删查改
console.log( map.set({size:'xxxl'},'xXXl'));//{'name' => 'xz', 'age' => 18, {…} => 'xXXl'}
console.log(map.delete('age')); //true
console.log(map.has('age'));//false
console.log(map.get('name'));//xz

遍历数据

  let map=new Map()
        map.set('name','xz');
        map.set('age',18)

 //遍历数据
     console.log(map.keys());//遍历所有的键
     console.log(map.values());//遍历所有的值
     console.log(map.entries());//entries() 方法返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)。 MapIterator {'name' => 'xz', 'age' => 18}
 //  迭代对象中数组的索引值作为 key, 数组元素作为 value。
	   map.set('xxxxx','xxxxxxxxxxxx')
	   map.set('lllllxx','lllxxxxxxxxx')
	   //key为键,value为值
	   for (const [key,value] of map.entries()){
	       console.log(key,value);//1.name xz  2.age 18
	   }
	   map.forEach((value,key)=>{
	       console.log(value,key);
	   })
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值