Карта является итеративной. Согласно ссылка ,
Объект Map выполняет итерацию своих элементов в порядке вставки
Предполагается, что он будет повторяться для достижения определенного элемента. Так что [...myMap][0][1]
фактически делает это, он выполняет итерацию всей карты и преобразует ее в массив, что не очень эффективно.
Несколько более эффективным способом может быть перебор ключей карты вместо:
myMap.get([...myMap.keys()][0])
И более эффективный способ состоит в том, чтобы не выполнять итерацию карты целиком и остановить итерацию при достижении элемента, например, с for..of
:
let item;
let i = 0;
for (const key of myMap.keys()) {
if (i === 0) {
item = myMap.get(key);
break;
}
i++;
}
Если это не происходит в критических для производительности местах, это можно считать предварительной оптимизацией. Даже в этом случае может существовать более эффективный способ хранения данных с учетом этого требования, например, с использованием подкласса Map
или с использованием обычного массива или Set
- если ключ не имеет значения, но индекс имеет значение, возможно, что в качестве ключа был выбран неправильный объект.