JavaScript Map的内部工作原理

JavaScript Map的内部工作原理

Map是一个元素的集合,每个元素存储为键值对。Map对象既可以存储对象,也可以存储原始值作为键或值。在本文中,我们将检查JavaScript中Map的内部工作方式。

Map的内部工作方式

JavaScript中的Map允许存储键值对,提供高效的检索、插入和删除操作。任何数据类型都可以用作键,并且元素的插入顺序得到保留。

Map提供与集合元素数量成线性相关的访问时间,并且根据标准实现。就像集合一样,Map内部以哈希表的形式存储值,搜索的时间复杂度为O(1)。另外,值也可以存储为搜索树或任何其他数据结构,以使搜索的时间复杂度优于O(N)。

严格相等性用于比较键,以确保可靠地检索关联值。当使用值相等性算法进行检索时,NaN被认为与NaN相等,其他相等性根据严格相等运算符确定。

示例: 这个示例展示了在JavaScript中对Map的基本实现。

Javascript

let map1 = new Map([ 
    [1, 2], 
    [2, 3], 
    [4, 5], 
    ]); 
for (const item of map1) { 
    console.log(item); 
}

输出: 我们可以看到映射中的元素存储顺序与其定义顺序相同,值相等算法在将数据存储到映射中之前会去除重复项。

[1, 2]
[2, 3]
[4, 5]

示例2: 这个示例展示了JavaScript中map的实现。

JavaScript

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

输出:

在此示例中,我们将map的has()方法与数组的includes()方法进行了比较。map的has()方法所需的时间少于数组的includes()方法。

false
map: 0.139892578125 ms
true
Array: 0.52294921875 ms

地图的重要性:

  • 意外的键和安全性: 没有默认键存储,只包含显式加入的内容。因此,使用地图是安全的。
  • 键类型和顺序: 可以使用任何值作为键函数,可以是对象等。顺序是按照插入顺序进行的。
  • 大小: 由于有大小属性,可以轻松检索地图的大小。
  • 性能: 任何操作都可以在地图上更好地执行。
  • 序列化和解析: 我们可以使用JSON.stringify()和JSON.parse()方法为地图创建自己的序列化和解析支持。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程