0%

20220622 JS中数据结构的一些想法

JS 中的数据结构

数组

优点

  • 原型方法较多,可以比较方便的实现各种功能
  • JSON 支持
  • 相比 java,数组的长度不是固定的,不存在越界问题
  • 兼容性好

缺点

  • 没有获取到索引的情况下,查询效率相对低,时间复杂度为 O(n)
  • 插入数据效率低O(n)
  • 删除数据效率O(n)

应用场景

  • 绝大部分数据处理
  • JSON 支持,可以直接在接口中返回
  • 前端列表渲染

对象

优点

  • 兼容性好
  • 查询效率高,时间复杂度为 O(1)
  • JSON 支持
  • 相对 Map 可以继承原型链上的属性

缺点

  • 相对 MAP 键值只能是 string
  • 相对 MAP 顺序不确定
  • 相对 MAP 没有迭代属性

应用场景

  • 通用场景
  • 需要一个固定 key 来做区分数据内容

MAP

优点

  • 查询效率高,时间复杂度为 O(1)
  • 相对对象这种结构,数据更清晰,效率更高
  • 相对 OBJECT,语义化更好,支持功能多

缺点

  • 原型方法没有数组多
  • JSON 不支持,如果作为接口数据返回,需要重新转换为数组或对象

应用场景

  • 需要一个固定格式的 key value

链表

优点

  • 插入性能比数组高 O(1)
  • 删除性能比数组高 O(1)

缺点

  • 索引效率低 O(n)
  • 原生不支持,需要自己实现链表结构

应用场景

  • 动态插入与删除比较多的场景

应用场景

  • 先进后出
  • JS 执行顺序

队列

应用场景

  • 先进先出
  • 排队场景
  • 性能瓶颈的时候,使用队列,排队处理数据

位图

应用场景

  • 打标签的场景

应用场景

  • DOM 树、CSS 树
  • 多层JSON
  • 级联菜单