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