Три встроенных итератора в JavaScript
На самом деле каждый итерируемый объект
содержит не один итератор, а три:
values
, keys
и entries
.
Для каждого типа объектов по умолчанию применяется
свой итератор. Для массивов - это values
,
а, например, для коллекции Map
,
это entries
.
Обладая этими знаниями, мы теперь можем
применить этот принцип к любой коллекции.
Например, пусть у нас есть коллекция Map
:
let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);
По умолчанию для этой коллекции применяется
итератор entries
:
for (let elem of map) {
console.log(elem); // ['a', 1], ['b', 2], ['c', 3]
}
Но мы легко можем получить ключи нашей коллекции:
for (let elem of map.keys()) {
console.log(elem); // 'a', 'b', 'c'
}
Также можем получить и значения:
for (let elem of map.values()) {
console.log(elem); // 1, 2, 3
}
Какой итератор по умолчанию действует в коллекции Set?