JavaScript Set的内部工作原理

JavaScript Set的内部工作原理

JavaScript Set 是一组不重复的值,即值不能重复出现。这些值可以是原始类型或对象。ES6的Set是有序的,集合的元素可以按插入顺序进行迭代。在本文中,我们将了解Javascript中Set的内部工作原理。

Set的工作原理

集合提供了在集合中元素数量的下线性访问时间。这意味着集合内部存储为哈希表,因此对于搜索的时间复杂度为O(1)。它们有时也以搜索树的形式存储,时间复杂度为O(log(N))。

它使用值的相等性来确定唯一性,根据数据类型来比较值。迭代是可预测的,因为值的插入顺序被保留。Set数据结构简化了在JavaScript应用程序中管理唯一值的操作。

为了测试集合的性能,我们将其与数组的includes()方法进行比较,通常发现它比includes()方法更快。

示例: 以下是JavaScript Set的基本示例。

Javascript

let set1 = new Set([10, 20, 30, 30, 40, 40]); 
  
for (const item of set1) { 
    console.log(item); 
}

输出: 我们可以看到集合中的元素按照定义的顺序存储,值的相等算法在存储数据之前会删除重复项。

Set(4) {10, 20, 30, 40}

示例2: 此示例描述了JavaScript中Set对象的用法。

JavaScript

const setVal = new Set(); 
  
for (let i = 0; i < 1000000; i++) { 
    setVal.add(i); 
} 
  
const arr = Array.from(Array(1000000), (_, i) => i); 
let include = arr.includes(999999) 
  
console.time('set') 
console.log(setVal.has(999999)); // Output: true 
console.timeEnd('set') 
  
console.time('Array') 
console.log(arr.includes(999999)); // Output: true 
console.timeEnd('Array')

输出: 在此示例中,我们将has()方法与数组的includes()方法进行了比较。set的has()方法所花费的时间要少于数组的includes()方法。

true
set: 0.126220703125 ms
true
Array: 0.48388671875 ms

集合的重要性:

  • 处理集合: 要处理元素的集合,例如从数组中消除重复项,请使用set函数。你可以通过将数组转换为Set,然后再转换回来,快速去除重复元素。
  • 唯一值: 集合主要用于存储独特的值。通过防止重复值,它确保集合中的每个元素都是不同的。对于需要保存一组唯一值的情况,Set非常适合。
  • 迭代: Set是可迭代的,这意味着您可以使用for…of循环或使用forEach()等方法轻松循环遍历其元素。这使得在Set中迭代存储的唯一值并对它们执行操作变得方便。
  • 数学集合操作: Set支持多种数学集合操作,包括并集、交集和差集。使用add()、remove()和forEach()等方法,您可以快速对Set对象执行类似的操作。
  • 内存效率: 与其他方法相比,例如在数组或对象中手动查找重复项,使用Set可以更加高效地使用内存,尤其在您拥有大量数据集并想确保它们的唯一性时。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程