Два ключа в Коллекции карт?

Если я запустил в любой консоли приведенный ниже код, мы увидим, что есть ключ (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 { … }

1 ответ

Потому что Map имеет набор ключей (например, hashmap), но также может использоваться как итератор (forEach, записи). Так что порядок ключей имеет определенное значение.

Следующее описание гласит:

Объект Map выполняет итерацию своих элементов в порядке вставки - цикл for... возвращает массив [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, потому что он был добавлен первым, а затем значение "два" в индексе 1 ...

Другие вопросы по тегам