面试题(十四):JS 数据类型里面, Set 和 数组相比较

4 阅读2分钟

在 JavaScript 中,Set和数组(Array)都是用来存储一系列数据的集合

Set

特性

  1. Set是一种新的数据结构,被引入在 ES6 中
  2. 它类似于数组,但是成员的值都是唯一的,没有重复的值
  3. 提供了简单的方法来进行添加(add)、删除(delete)、检查(has)成员,以及获取集合大小(size)。
  4. 不支持索引访问(例如,set[0]是不可能的),因此不适于通过索引获取或操作元素的场景
  5. 对集合元素的迭代相对简单,有values()keys()(与values()相同)和entries()方法,以及forEach方法

适用场景

  • 存储唯一值的集合时,比如集合、标签、关键字等
  • 高效地进行存在性检查(是否包含某个元素)时
  • 不需要元素的索引和顺序访问,或者添加和删除操作比查找和访问操作更频繁时

Array

特性

  1. 数组是 JavaScript 中最基本的数据结构之一
  2. 数组中的元素可以通过索引进行访问,提供了广泛的方法来进行遍历、映射(map)、过滤(filter)、归并(reduce)等操作。
  3. 数组中可以包含重复的值
  4. 数组的长度是可变的,可以通过pushpop等方法动态地添加或移除元素

适用场景

  • 需要通过索引访问元素时,数组提供了方便的方法
  • 集合中允许存在重复的元素时
  • 需要使用一系列数组特有的方法操作数据时,比如mapfilterreduce
  • 需要对数据进行排序,或需要保持元素的添加顺序时

根据不同应用场景选择

  • 唯一性:如果你需要确保一个集合中元素的唯一性,选择Set
  • 查找和删除:需要高效的查找和删除操作,而且元素的唯一性很重要,选择Set
  • 索引访问和顺序:需要通过索引来频繁访问或更新元素,或者需要对元素进行排序,选择数组
  • 数据处理:需要对集合进行复杂的数据处理,比如映射、过滤、归并等操作,选择数组