如何在Node.js Javascript中获取新Set()的最大可能大小?
let mySet = new Set(); mySet.MAX_VALUE;
只有.size可以作为get size。
xzv2uavs1#
Set示例只受可用内存的限制(或者环境强加的任意限制),没有特定的方法来确定这个限制(如果实际上可以用最大元素数来描述的话)。size属性的getter返回一个number,因此理论上,如果Set中包含的元素多于Number.MAX_SAFE_INTEGER,这个数字可能不精确。这并不意味着Set不能包含那么多元素size的规范在访问点将元素的真实计数转换为number类型。你在评论中说:我想知道mySet在我的计算机上可以有多大。这可能取决于你在集合中放入了什么,但据我所知,你只能通过构建一个集合来确定,直到添加失败为止。在我使用节点v18的机器上,我可以在集合失败之前将16,777,216BigInt示例添加到集合中,并且我可以添加相同数量的唯一对象,其中每个对象都包含该BigInt的副本(即一组更大的东西),这表明Node.js将Set的大小限制为那么多元素,而不考虑内存(因为这两个限制都没有超出我的内存边界)。
Set
size
number
Number.MAX_SAFE_INTEGER
16,777,216
BigInt
1条答案
按热度按时间xzv2uavs1#
Set
示例只受可用内存的限制(或者环境强加的任意限制),没有特定的方法来确定这个限制(如果实际上可以用最大元素数来描述的话)。size
属性的getter返回一个number
,因此理论上,如果Set
中包含的元素多于Number.MAX_SAFE_INTEGER
,这个数字可能不精确。这并不意味着Set
不能包含那么多元素size
的规范在访问点将元素的真实计数转换为number
类型。你在评论中说:
我想知道mySet在我的计算机上可以有多大。
这可能取决于你在集合中放入了什么,但据我所知,你只能通过构建一个集合来确定,直到添加失败为止。
在我使用节点v18的机器上,我可以在集合失败之前将
16,777,216
BigInt
示例添加到集合中,并且我可以添加相同数量的唯一对象,其中每个对象都包含该BigInt
的副本(即一组更大的东西),这表明Node.js将Set
的大小限制为那么多元素,而不考虑内存(因为这两个限制都没有超出我的内存边界)。