不要再把 Object 当作 Hash Map

在我们日常开发过程中,哈希映射表(Hash Map)肯定是最常用的数据结构之一。它以键值对的形式存储数据,所以很容易通过键(Key)来获取对应的值(Value)。在 Java 中,可以明确的使用 HashMap 对象,但是在 Javascript 里,大家普遍默认使用的 Object 来作为 HashMap 使用:

const map = {
   };

// 键值对
map['key1'] = 'value1';
map['key2'] = 'value2';
map['key3'] = 'value3';

// 检查 map 是否有 'key1' 属性
if (map.hasOwnProperty('key1')) {
   
  console.log('Map contains key1');
}

// 获取 'key1' 属性对应的值
console.log(map['key1']);

但其实,Javascript 里也有内建的一种数据结构专门用来作为 HashMap 来使用:Map。Map 对象是 es6 的标准,因此在 es5 中要配合适当的 polyfill 来使用。不过不用担心,大部分现代浏览器都已经很好的支持了 Map 对象。

Map 对象的浏览器兼容性

上面是 Map 对象在 MDN 中的列出的浏览器兼容性,可以看到,已经被微软抛弃的 IE11 部分支持,其他平台几乎都是完全支持,绝对可以放心食用。

下面我解释一下为什么要用 Map 而不是 Object。

键支持更丰富的数据类型

Object 的键只能是 Symbol 对象或者字符串。而 Map 可以使用任意数据类型作为键,甚至可以用 Object 或者 Function,只有想不到没有做不到:

const map = new Map();
const myFunction = (
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值