Повторение вызова на основе доступности в Symbol ES6 - PullRequest
0 голосов
/ 09 февраля 2019

Я использовал итератор ES6 Symbols, где при выполнении итерации мне нужно каждый раз вызывать функцию next для печати следующих элементов

Вот мой код:

var title = "Omkar";
var iterateIt = console.log(typeof title[Symbol.iterator]);
var iterable = title[Symbol.iterator]();

do {
  console.log(iterable.next().value);
} while (iterable.done)

Он печатает только O

, но если я сделаю еще 4 раза console.log(iterable.next().value);, я получу значение Предположим, у меня есть строка с большим количеством символов. Пример- "Чубакка" тогда мне приходится делать 9 раз эту самую консоль.Почему я должен звонить в следующий раз, когда моя логика выше говорит, что это еще не сделано, получи следующее значение.Если есть какой-то способ, пожалуйста, скажите.

1 Ответ

0 голосов
/ 09 февраля 2019

Свойство .done находится в объекте , возвращаемом при вызове итерируемого , а не в самом итерируемом:

var title = "Omkar";
var iterable = title[Symbol.iterator]();

let value, done;
do {
  ({ value, done } = iterable.next());
  if (!done) console.log(value);
} while (!done)

Возможно, вам будет удобнее использовать цикл for..of вместо:

var title = "Omkar";
for (const char of title) {
  console.log(char);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...