【问题标题】:Two keys in Map Collection?地图集合中有两个键?
【发布时间】:2018-05-12 14:21:21
【问题描述】:

如果我在任何控制台中运行下面的代码,我们可以看到有一个键(在下面显示的示例中为 0,1,2),我不明白为什么。

我们似乎有两个键:这是自动生成的一个和您手动设置的键(在示例中。: 1, : 2, : true )

我想知道为什么会这样。

let mapTesting = new Map([
    [1, 'String'],
    [2, 123],
    [true, 'Testing']
]);
console.log(mapTesting)

//Output:
Map
  size: 3
  <entries>
    0: 1 → "String"
        <key>: 1
        <value>: "String"
    1: 2 → 123
        <key>: 2
        <value>: 123
    2: true → "Testing"
        <key>: true
        <value>: "Testing"
  __proto__: Object { … }

【问题讨论】:

  • 这些不只是迭代的索引吗?
  • @pinkfloydx33 我真的不知道,我正在学习 JS。这是我的第一周。 :)
  • @PabloDeLuca Map 可以迭代,这些只是迭代的索引。在进入新的闪亮的 ES6+ 东西之前,你应该真正了解更基本的东西。
  • 为什么如果我在控制台中打印的对象具有基于它的属性的相同键或标识符? (0, 1, 2...)。而且对象不是可迭代对象

标签: javascript dictionary collections key


【解决方案1】:

因为 Map 有一组键(如 hashmap),但也可以用作迭代器(forEach,entry)。所以键的顺序很重要。

following 描述指出:

一个 Map 对象以 插入顺序 迭代它的元素——一个 for...of 循环为每次迭代返回一个 [key, value] 数组。

0,1,2,.. 表示顺序(添加键/值的顺序)。然后显示键和值:

var mapTesting = new Map([
    ["one", 'String'],
    ["two", 123],
    ["three", 'Testing']
]);
mapTesting.set("another","value");
console.log(Array.from(mapTesting.keys()));

这显示了一个在索引 0 处具有值“one”的数组,因为它首先被添加,然后在索引 1 处具有值“two”......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多