Этот вопрос проверяет знание методов перебора коллекции Map в JavaScript, что важно для работы со структурами данных, где ключи могут быть любого типа.
Map в JavaScript — это коллекция пар ключ-значение, где ключи могут быть любого типа (в отличие от обычных объектов). Для перебора её элементов существует несколько удобных способов.
Этот метод позволяет получить доступ и к ключу, и к значению в каждой итерации. Map является итерируемым объектом, и при использовании for...of он возвращает пары [ключ, значение].
const myMap = new Map([
['name', 'Alice'],
[42, 'The Answer'],
[{ id: 1 }, 'Object Key']
]);
for (const [key, value] of myMap) {
console.log(key, '->', value);
}
// Вывод:
// 'name' -> 'Alice'
// 42 -> 'The Answer'
// { id: 1 } -> 'Object Key'Map также предоставляет знакомый метод forEach, аналогичный массивам. Он принимает функцию-колбэк, которой передаются значение, ключ и сама коллекция Map.
myMap.forEach((value, key) => {
console.log(`Ключ ${key} соответствует значению ${value}`);
});Вы можете получить итераторы для отдельных частей коллекции:
map.keys() — возвращает итератор по ключам.map.values() — возвращает итератор по значениям.map.entries() — возвращает итератор по парам [ключ, значение] (используется по умолчанию в for...of).// Получить все ключи в виде массива
const allKeys = Array.from(myMap.keys());
console.log(allKeys); // ['name', 42, { id: 1 }]
// Итерация только по значениям
for (const val of myMap.values()) {
console.log(val);
}Итерация по Map часто нужна при обработке данных, где важна гарантированная порядковая последовательность элементов (порядок в Map соответствует порядку добавления). Это полезно в кэшировании, конфигурациях, хранении связанных данных с нестроковыми ключами.
Вывод: Используйте for...of для простого перебора всех пар, forEach для функционального стиля, а методы keys()/values() — когда нужны только ключи или значения. Выбор метода зависит от конкретной задачи и стиля кода.