Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在尝试了这个例子之后,我对基本的映射和Javascript设置感到困惑_Javascript_Arrays_Ecmascript 6_Set_Javascript Objects - Fatal编程技术网

在尝试了这个例子之后,我对基本的映射和Javascript设置感到困惑

在尝试了这个例子之后,我对基本的映射和Javascript设置感到困惑,javascript,arrays,ecmascript-6,set,javascript-objects,Javascript,Arrays,Ecmascript 6,Set,Javascript Objects,我试图用一些例子来更好地理解Map和Set的区别,它们的行为似乎都很混乱。请看下面的示例和输出 地图示例: let nameMap = new Map([ ['name', 'stack'], ['name', 'overflow'], ['domain', 'technology'] ]); // iterate over keys (nameMap) for (let name of nameMap) { console.log(JSON.stringify(name));

我试图用一些例子来更好地理解Map和Set的区别,它们的行为似乎都很混乱。请看下面的示例和输出

地图示例:

let nameMap = new Map([
  ['name', 'stack'],
  ['name', 'overflow'],
  ['domain', 'technology']
]);

// iterate over keys (nameMap)
for (let name of nameMap) {
  console.log(JSON.stringify(name)); 
}
输出:

["name","overflow"]
["domain","technology"]
树立榜样:

let nameSet = new Set([
  ['name', 'stack'],
  ['name', 'overflow'],
  ['domain', 'technology']
]);

// iterate over keys (nameSet)
for (let name of nameSet) {
  console.log(JSON.stringify(name));
}

输出:

["name","stack"]
["name","overflow"]
["domain","technology"]
  • 我的问题是为什么map只返回两个相似对象的第二次出现
  • Set返回所有三个对象,即使前两个键和值相同,但它应该删除其中一个

  • 因为
    Set
    s类似于数组-它们只是将值存储在列表中。因此,构造函数将所有三个数组作为值添加到新集合中。
    Map
    构造函数类似于
    对象。fromEntries
    -每个子数组中的第一项是键,第二项是值。不能在一个集合中存储键,只能存储值-因此这两个项必须完全相同,并且是一个原语,才能从集合中排除。

    因为
    Set
    s类似于数组-它们只将值存储在列表中。因此,构造函数将所有三个数组作为值添加到新集合中。
    Map
    构造函数类似于
    对象。fromEntries
    -每个子数组中的第一项是键,第二项是值。不能将键存储在一个集合中,只能存储值-因此这两个项必须完全相同,并且是一个原语,才能从集合中排除

    我的问题是为什么map只返回两个相似对象的第二次出现

    因为映射包含一组键值对。每个键只能有一个值。在构造函数中,每个数组表示
    [键,值]
    )。第二位数据加上键
    'name'
    覆盖第一位数据

    Set返回所有三个对象,即使前两个键和值相同,但它应该删除其中一个

    集合存储一组唯一的值。每个数组(如
    ['name',stack']
    )都是一个值

    我的问题是为什么map只返回两个相似对象的第二次出现

    因为映射包含一组键值对。每个键只能有一个值。在构造函数中,每个数组表示
    [键,值]
    )。第二位数据加上键
    'name'
    覆盖第一位数据

    Set返回所有三个对象,即使前两个键和值相同,但它应该删除其中一个


    集合存储一组唯一的值。每个数组(如
    ['name',stack']
    )都是一个值。

    A
    Map
    是键值对的容器。在您的输入中,
    name
    domain
    将成为键。由于密钥只能存在一次,因此密钥
    name
    会被消除重复数据


    Set
    是一个值数组,用于消除值本身的重复数据。由于输入中没有任何相同的值,因此所有值都将保留。

    A
    Map
    是键值对的容器。在您的输入中,
    name
    domain
    将成为键。由于密钥只能存在一次,因此密钥
    name
    会被消除重复数据


    Set
    是一个值数组,用于消除值本身的重复数据。由于输入中没有任何相同的值,因此所有值都将保留。

    因此,对于映射,键的名称很重要。而集合在包含对象之前会查找唯一的引用(如对象)。我理解对了吗?集合会查找唯一的值。对不同但相同数组的引用是不同的。不支持对同一数组的两个引用。两个完全相同的原语并不相同。因此,对于映射,键的名称很重要。而集合在包含对象之前会查找唯一的引用(如对象)。我理解对了吗?集合会查找唯一的值。对不同但相同数组的引用是不同的。不支持对同一数组的两个引用。两个相同的基元不相同。