Set VS Array


数组(Array)和集合(Set)数据结构类型有很多共同点,下面我们就来看看它们有哪些相似之处、彼此有何不同以及它们的使用情况。

什么是Set和Array?

Set

Set是一种数据类型,可用于存储任何类型的数据,无论是原始数据还是对象的引用。Set将数据存储在具有键的集合中,这些键可以按照插入时的顺序进行迭代。

Array

Array是一种用于在连续内存中存储数据的高级列表式对象。每个数组都有多个单元格,每个单元格都有一个用于访问其数据的数字索引。它是所有数据结构中最基本、最常用的一种。

现在,我们已经知道了它们是什么,让我们来看看它们之间的异同点。

异同点

我们需要了解如何构造或初始化这两个对象。

这两个对象都有一个内置的构造函数,它使用新的语法来声明新的数据结构。不过,与Set不同,Array并不局限于这种声明方法。Array也可以用字面量的方式来声明。

Set类型的初始化方式

const set = new Set();

Array类型的初始化方式

const arr = new Array();
// or
const arr = [];

另外,字面量的方法初始化数组的速度要快得多;从构造上看是如此,从性能上看也是如此。构造函数的方法与前者相比速度较慢,而且容易出现下面这样的错误:


const arr = new Array(20);

arr[0]  //outputs: undefined

arr.length //outputs: 10

// 字面量的方式
const arrLtr = [20];

arrLtr[0] //outputs: 20

arrLtr.length //outputs: 1

接下来,继续深入探讨一下SetArray的区别。

Set Array 的相似之处是显而易见的。如果你以前接触过数组(跟谁没有接触过似的),你会很容易注意到它们的一些共同点。 但是,它们之间的差别也是相当大的。

SetArray 之间最大的差别就是:Set 只能包含一个值的一个实例。例如,在一个数组中,一个值为hufei的字符串可以出现很多次。而在 Set 中,只会存在一个hufei 。如果尝试继续添加hufei,其实不会发生任何事情。

如果在 Set 中强制添加重复的值,会发生什么情况?

Set 只会选择其中一个重复值,并删除其余的值。 不过,Set 对重复数据值的不容忍也有它的好处,尤其是在你不希望数据结构中出现重复值或数据泄露的情况下。

Set 和 Array 的大部分相似之处在于它们的操作方式;它们如何用数据或其他方式填充数据。

Array:有多种方法可以插入或移除值,例如push()pop()unshift()shift()splice()。 Set:只有一个方法add()用于添加元素,delete()用于移除元素。

使用Set还是Array?

可以从两个角度入手:元素唯一性性能

  • 当需要在数据结构中使用唯一元素时,应当使用Set。虽然数据经过修改后,也能做到这一点,但是Set针对这个点进行了优化;
  • 如果需要高性能的元素查找,应当使用Set的hast()方法;
  • 如果想比较直接地访问元素、交换元素或者二分查找,应当使用数组;
  • 如果要想防止数据产生内存泄漏,应当使用Set;
  • 如果想要更多灵活和更多的功能,应当使用数组;

总结

相比Set,数组具有更好的灵活性,像一把瑞士军刀;而在特定领域,Set具有更高的性能和自动去重的能力。 明确了以上几点,就可以根据自己的需求,有选择性的选择应该使用Set或者Array了~~

拜拜~