@Ivanushka255

Почему у «оригинального» объекта Map не работает метод next()?

Насколько я знаю, коллекция Map является итерируемым объектом. Т.е. тем объектом, у которого "под капотом" есть ф-ция [Symbol.iterator]. У этой ф-ции в свою очередь есть возвращаемый объект-итератор, который содержит метод next(). Благодаря этому происходит перебор эл-тов в цикле for..of. Например:
let map = new Map([
	['йогурт', 300],
	['морковь', 10],
	['творог', 300]
]);

for(let value of map) {
	console.log(value); //['йогурт', 300], ['морковь', 10], ['творог', 300]
}

Почему тогда во втором случае не происходит запуска next()?
const map1 = new Map(
	['0', 'foo'],
	[1, 'bar']
);
const iterator1 = map1.entries();

//Первый случай
console.log(iterator1.next().value); //['0', 'foo']
console.log(iterator1.next().value); //[1, 'bar']

//Второй случай
console.log(map1.next().value); //map1.next is not a function

Чем отличается оригинальный объект Map от того, что возвращает встроенный метод entries()?
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы