javascript Map数据结

1、Map结构 的目的 && 基本用法

Map对象 与 Object对象
区别主要在于:

Object 的key只能是字符串

Map对象 的key可以解析这个字符串所对应的变量、对象等

// 的key只能是字符串
var data = {};
var element = document.getElementById('myDiv');
data[element] = 'metadata';
data['[object HTMLDivElement]'] // "metadata"


// 这个key是对象o 
var m = new Map();
var o = {
    p: 'Hello World'
};
m.set(o, 'content')
m.get(o) // "content"
m.has(o) // true
m.delete(o) // true
m.has(o) // false

上面代码使用set方法, 将对象o当作m的一个键, 然后又使用get方法读取这个键, 接着使用delete方法删除了这个键。
作为构造函数, Map 也可以接受一个数组作为参数。 该数组的成员是一个个表示键值对的数组。

2、Map的定义 && 常用的使用方法

//使用方法
ps1:
var m = new Map();
var o = {
    p: 'Hello World'
};
m.set(o, 'content') // 设置值
m.get(o) // 查询值 'content'
m.has(o) // 查询是否存在 true
m.delete(o) // 删除值 true
m.has(o) // 查询是否存在 fales

ps2: 
var map = new Map([
    ['name', ' 张三 '],
    ['title', 'Author']
]);
map.size // 查询长度 2
map.has('name') // true
map.get('name') // " 张三 "
map.has('title') // true
map.get('title') // "Author"

3、Map的注意事项

1. 字符串true和布尔值true是两个不同的键。
2.如果对同一个键多次赋值, 后面的值将覆盖前面的值。
3.读取一个未知的键, 则返回undefined。
4.只有对同一个对象的引用, Map 结构才将其视为同一个键。 这一点要非常小心。
var map = new Map();
map.set(['a'], 555);
map.get(['a']) // undefined

// 内存地址是不一样的, 因此get方法无法读取该键, 返回undefined。
// 同理, 同样的值的两个实例, 在 Map 结构中被视为两个键。
5.如果 Map 的键是一个简单类型的值( 数字、 字符串、 布尔值), 则只要两个值严格相等, Map 将其视为一个键, 包括0和 - 0。 另外, 虽然NaN不严格相等于自身, 但 Map 将其视为同一个键。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厚渡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值