JavaScript中Map数据结构的基本属性、用法与对象的切换,WeakMap数据类型与应用

本文介绍了JavaScript中的Map数据结构,包括其基本用法、属性与方法,如set、get、has等。强调了Map键名的特性,并探讨了Map与数组、对象之间的转换。此外,还详细讲解了WeakMap数据类型及其应用场景,如何防止内存泄露。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

45 Map数据结构

45.1 Map的基本用法

键名必须数据类型值一模一样

1.Object 字符串-值

2.Map 值-值 hash结构 key:value

对象的好处是独一无二 创建后的地址不一样

let s=new Set();

let s=new Set();			//value只能出现一次
s.add()

let m=new Map();			
m.set(o,"aabbcc");
m.get(o)			//aabbcc

let o={
    x:1,
    y:2
}
let m=new Map([			//key只能出现一次  要用对象来设键名的时候,一定要在外面设变量
    [
        [o,"aabbcc"],
        [9582,"dsaf"],
        [undefined,"csdf"]
    ]
]);
Map的键名是内存中间的一段数据,数据+下一个数据的地址**,线性链式存储结构

数据结构:线性结构和非线性结构

1.Map的属性与方法

属性

map.set(key,value)

map.set(key,value)

get(key)

has(key)

delete(key)

clear()

方法

keys()

for( let key of map.key()){
	console.log(key)
}

value()

for( let value of map.value()){
	console.log(value)
}

entries() 键值对

for( let [key,value] of map.entries()){
	console.log(key,value)
}

forEach()

for( let entries of map){
	console.log(entries)
}

45.2 Map的数据结构的转换

map结构转换为数组结构,比较快速的方法是使用扩展运算符(…)。例子↓:
强烈建议以后对象转数组都用[… 方法]
[...map.keys()]
[...map.values()]
[...map.entries()]
[...map]

[...map].filter(([key,value])=>key<3)

转换后可以用array的filter

map和数组的转换

!一定要二维数组的结构

1.map转为数组
const myMap=new Map();
		.set('yes',true);
		.set('no',false);
	[...myMap]				//(2) [Array(2), Array(2)]
							//0: (2) ["yes", true]
							//1: (2) ["no", false]
							//length: 2
2.数组转为map
new Map([
    [true,7],
    [{foo:3},['abc']]
])							//Map(2) {true => 7, {…} => Array(1)}

map和对象切换

1.map转为对象
function strMapToObj(strMap){
    let  obj=Object.create(null);
    for(let [k,v]of strMap){
        obj[k]=v;
    }
    return obj;
}

const myMap=new Map();
		.set('yes',true);		//键值需为字符串
		.set('no',false);
	strMapToObj(myMap);		//{yes: true, no: false}
2.对象转为Map
function objToStrMap(obj){
	let strMap =new Map();
	for(let k of Object.keys(obj)){
		strMap.set(k,obj[k]);
	}
	return strMap;
}
objToStrMap({yes:true,no:false})	//Map(2) {"yes" => true, "no" => false}

45.3 WeakMap数据类型与应用

1.weakmap只接受对象作为键名(null除外

2.weakMap键名指向的对象,不计入垃圾回收机制(不算是引用

所以,假如不引用了,就立马消失,

应用场合:键所对应的对象可能会在将来消失。防止内存泄露 雨滴滴落

has()

get()

has()

delete()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值