梗概

数据结构选择中,绝大多数数据都是若干个数据项的集合。在能用的角度上,数组Map,但需要根据具体需求进行选择。

数组 vs Map 决策框架

硬性条件(优先判断)

  1. 是否有唯一标识:无 → 只能选择数组
  2. 插入/调整位置需求:需在中间/指定位置插入 → 选择数组

主要决策因素

  • 操作频率
    • 高频按标识读写 → 选择 Map
    • 高频按顺序整体处理 → 选择数组

使用Map:

  • 储存的键不是字符串/数字/或者 Symbol 时,选择 Map,因为 Object 并不支持
  • 储存大量的数据时,选择 Map,因为它占用的内存更小
  • 需要进行许多新增/删除元素的操作时,选择 Map,因为速度更快
  • 需要保持插入时的顺序的话,选择 Map,因为 Object 会改变排序
  • 需要迭代/遍历的话,选择 Map,因为它默认是可迭代对象,迭代更为便捷

使用 Object

  • 只是简单的数据结构时,选择 Object,因为它在数据少的时候占用内存更少,且新建时更为高效
  • 需要用到 JSON 进行文件传输时,选择 Object,因为 JSON 不默认支持 Map
  • 需要对多个键值进行运算时,选择 Object,因为句法更为简洁
  • 需要覆盖原型上的键时,选择 Object