Object/Map 何为最佳实践

在解决问题考虑两者的时候就需要考虑两者的区别。

「Map」 是可迭代的,可以直接进行迭代,例如forEach循环或者for...of...循环.Map 保持对长度的跟踪,map.size可获取长度。

  • 插入顺序是你解决问题时需要考虑的,并且当前需要使用除 String 和 Symbol 以外的键名时,那么 「Map」 就是个最佳解决方案
  • 如果需要遍历键值对(并且需要考虑顺序),那我觉得还是需要优先考虑 「Map」
  • Map是一个纯哈希结构,而Object不是(它拥有自己的内部逻辑)。Map 在频繁增删键值对的场景下表现更好,性能更高。因此当你需要频繁操作数据的时候也可以优先考虑 Map
  • 再举一个实际的例子,比如有一个自定义字段的用户操作功能,用户可以通过表单自定义字段,那么这时候最好是使用 Map,因为很有可能会破坏原有的对象
  • 当你需要处理一些属性,那么 「Object」 是完全受用的,尤其是需要处理 JSON 数据的时候。由于 「Map」 可以是任意类型,因此没有可以将其转化为 JSON 的原生方法。

「Object」对象通常可以很好的保存结构化数据,但是也有相应的局限性:

  1. 键名接受类型只能用 String 或者 Symbol
  2. 自定义的键名容易与原型继承的属性键名冲突(例如 toString,constructor 等)
  3. 对象/正则无法用作键名 而这些问题通过 「Map」 都可以解决,并且提供了诸如迭代器和易于进行大小查找之类的好处
原文地址:https://www.cnblogs.com/wujiaqi/p/13368823.html