javaScript之引用类型Map

一、作用

Map的作用

在JavaScript中,Map 是一种内置的引用类型,用于存储键值对(key-value pairs)的集合。与普通的对象(Object)不同,Map 允许任何类型的键(对象或原始值),并且键的顺序会被保留。以下是Map的一些主要作用:

1、任意类型的键:普通的JavaScript对象只接受字符串或Symbol作为键。然而,Map可以接受任何类型的键,包括函数、对象或其他原始类型。
const map = new Map();  
map.set({foo: 'bar'}, 'some value');
2、键的顺序:Map保持键值对的插入顺序。这使得Map非常适合用于需要按照特定顺序迭代键值对的场景。
const map = new Map();  
map.set('a', 1);  
map.set('b', 2);  
map.set('c', 3);  
for (let [key, value] of map) {  
    console.log(key, value); // 输出: a 1, b 2, c 3  
}
3、大小和迭代:Map 提供了一些方法,如 size 来获取Map中的键值对数量,以及 const map = new Map();  
map.set('a', 1);  
map.set('b', 2);  
console.log(map.size); // 输出: 2  
for (let key of map.keys()) {  
    console.log(key); // 输出: a, b  
}

4、性能:在某些情况下,Map可能比普通的对象提供更好的性能,特别是在处理大量数据或需要频繁添加、删除键值对时。

5、易于检测:使用 instanceof 运算符可以很容易地检测一个变量是否是Map的实例,而普通的对象则没有这样的内置方法。
const map = new Map();  
console.log(map instanceof Map); // 输出: true

由于这些特性和优势,Map 在许多场景中都非常有用,特别是在需要处理复杂数据结构或需要保持键值对插入顺序的场合。

二、方法

Map的方法

1、给实例设置一对键值对

set(key, value)方法,返回map实例

// 相同的属性名 会替换之前的属性
let map = new Map([[1, 2, 3], ['name', 'zs'],[{name:'账上'},{function() { }}]]);
map.set(4, 5);
console.log(map);

2、通过属性名获取属性值

get(key) 通过属性名获取属性值

let map = new Map([[1, 2, 3], ['name', 'zs'],[{name:'账上'},{function() { }}]]);
console.log(map.get(1)); // 2
console.log(map.get('name')); // zs
console.log(map.get({name:'账上'})); // undefined  因为指向的不是一个栈

3、删除指定的键值对

delete() 方法 删除指定的键值对

let map = new Map([[1, 2, 3], ['name', 'zs'],[{name:'账上'},{function() { }}]]);
console.log(map.delete(1));
 console.log(map.delete({name:'账上'})); // false  因为指向的不是一个栈
 console.log(map);

4、清除所有键值对

clear 清除所有键值对 返回值undefined

console.log(map.clear());  // undefined
console.log(map); 

5、判断属性是否存在

has() 判断属性是否存在

console.log(map.has('name'));

6、返回实际的键值对

entries 返回实际的键值对

for (let [key, value] of map.entries()) {
	console.log(key);   // name  {name: '账上'}...
	console.log(value); // zs  {function: ƒ}...
} 

7、获取键与值

keys和values

for (let key of map.keys()) {
	console.log(key);
}
for (let value of map.values()) {
	console.log(value);
}

8、forEach 遍历

map.forEach((key, value) => { 
	console.log(key + ':' + value);
});

9、获取实例的成员

size 获取实例的成员

console.log(map.size); // 3

三、伴生结构-WeakMap

WeakMap其key值只能是引用类型的值
WeakMap和Map区别:
WeakMap不可遍历,没有size属性,entires keys values forEach没有

let wMap = new WeakMap([[{name: '战士'}, 2]]);
console.log(wMap);
wMap.set([4], 5);
console.log(wMap);
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值