为什么集合中的项在JavaScript中被称为value而不是key?

为什么集合中的项在JavaScript中被称为value而不是key?,javascript,ecmascript-6,Javascript,Ecmascript 6,Set.prototype.forEach在ES6中接受回调函数该函数有3个参数与Map.prototype.forEach一致。表示回调的前两个参数都是值,因为Set对象中没有键。为什么集合中的项目被视为值而不是键?Set对象中没有重复的键更有意义,因为Map中也没有重复的键 Set中的值看起来像Map中的键的另一个方面是,它使Set.prototype.has(值)和Map.prototype.has(键)更加一致。在数组(键是索引)和映射中不允许重复键,但这不能扩展到不允许重复值的集合。使

Set.prototype.forEach
在ES6中接受回调函数该函数有3个参数与
Map.prototype.forEach
一致。表示回调的前两个参数都是值,因为
Set
对象中没有键。为什么
集合中的项目被视为值而不是键?
Set
对象中没有重复的键更有意义,因为
Map
中也没有重复的键


Set
中的值看起来像
Map
中的键的另一个方面是,它使
Set.prototype.has(值)
Map.prototype.has(键)
更加一致。在
数组
(键是索引)和
映射
中不允许重复键,但这不能扩展到不允许重复值的
集合
。使其成为所有容器中都不允许使用重复键可能是一个更简洁的规则。

这只是因为集合的语义不同。集合存储值,而地图存储键和值


例如,摩托车和自行车都有两个轮子,但你仍然说有摩托车和自行车。仅仅因为集合值和映射键是唯一的并不意味着它们是相同的东西。

这只是因为集合的语义不同。集合存储值,而地图存储键和值


例如,摩托车和自行车都有两个轮子,但你仍然说有摩托车和自行车。仅仅因为设置值和映射键是唯一的,并不意味着它们是相同的。

来自您所附加的MDN链接

集合对象中没有关键点。然而,前两个论点是 这两个值都包含在集合中,因此回调函数 与映射和数组的forEach方法一致


我们可以说集合只是一个数组,它保留不同的元素。集合中没有键。

来自您所连接的MDN链接

集合对象中没有关键点。然而,前两个论点是 这两个值都包含在集合中,因此回调函数 与映射和数组的forEach方法一致


我们可以说集合只是一个数组,它保留不同的元素。集合中没有键。

A
Map
对象有一个键和一个值,它们是独立的实体。
集合
对象只有一个值,您可以使用该值将值添加到
集合
中,并使用该值测试该值是否在
集合
中。本质上,
Set
是由值索引的,所以它有点像
Set
是一个
Map
,其中键和值是相同的。您上次的编辑让我想到了一个问题:问题是什么D@Matíasfidemrazier我的上一次编辑添加了一些证据,证明在
Set
中将项调用为键而不是值可能更合适。因此,我的问题仍然是,为什么支架将
Set
中的项称为值,而不是键。:)已经回答了两次:(一个
Map
对象有一个键和一个值,它们是独立的实体。一个
Set
对象只有一个值,你可以用它将值添加到
Set
中,并用它来测试值是否在
集中。本质上,
Set
是由值索引的,所以它有点像
Set
映射de>其中键和值是相同的。您上次的编辑让我问了一个关于您自己的问题:问题是什么D@Mat我的上一次编辑添加了一些证据,证明将
Set
中的项调用为键而不是值可能更合适。因此我的问题仍然是为什么该支架将
Set
中的项调用为值,而不是键。:)已经回答了两次:(大多数集合都有一个底层数组存储;DWell,我们必须从以下内容开始:DWell大多数集合都有一个底层数组存储;DWell,我们必须从以下内容开始:D