Опубликовано: 1 мая 2025 г.
Если вы пишете JavaScript, то итерации — это то, чем вы часто занимаетесь. Вы либо пишете циклы для работы с массивами, либо используете методы функционального программирования, такие как map
, filter
и другие подобные методы, для обработки всех видов данных.
Однако одним камнем преткновения при использовании этих методов является то, что они доступны только для массивов. Если вы хотите использовать их в итерации, вам придется преобразовать ее в массив, а затем вызвать нужный вам метод. Это может быть расточительно, или в тех случаях, когда интерпретируемый объект содержит бесконечный набор данных с использованием функций-генераторов , это невозможно. Однако теперь, когда помощники итераторов стали доступны в рамках Baseline Newly, эта возможность наконец-то дост��пна во всех браузерах.
Как работают помощники итератора?
Помощники итератора предоставляются путем определения новых методов в prototype
объекта Iterator
. Эти методы соответствуют многим методам функционального программирования, которые вы привыкли использовать, например, map
, filter
, reduce
и другим подобным методам.
Например, вы можете использовать вспомогательный итератор в методе filter
для фильтрации элементов списка по содержимому их innerText
для коллекции узлов DOM, которое затем можно использовать позже в цикле for
:
const posts = document.querySelectorAll("ul#specific-list > li")
.values()
.filter(item => item.textContent.includes("kiwi"));
// For-of loops can only be used on iterables, which `posts` is!
for (const post of posts) {
console.log(post.textContent);
}
В предыдущем фрагменте кода вспомогательный метод итератора для filter
используется для перебора всех элементов <li>
в определенном ��лементе <ul>
. Критерием фильтрации является то, что текстовое содержимое каждого элемента должно содержать подстроку "kiwi"
.
Помощники-итераторы также можно использовать с функциями-генераторами. В этом примере функция-генератор, которая вычисляет факториалы , но использует вспомогательный итератор для фильтрации значений до тех, которые делятся на 8, и записывает первые пять отфильтрованных значений на консоль:
function* factorials (n) {
let result = 1;
for (let i = 1; i <= n; i++) {
result *= i;
yield result;
}
}
const filteredFactorials = factorials(128).filter(x => x % 8 === 0);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
В частности, предыдущий фрагмент кода является примером того, что было бы невозможно с помощью помощников итераторов, поскольку число факториалов бесконечно, и иначе вы не сможете преобразовать их в массив!
В зависимости от вашей ситуации помощники-итераторы имеют большой потенциал — и они доступны для каждого из этих итерируемых методов:
Возможности использования помощников итераторов огромны и могут значительно улучшить эргономику разработчиков. Теперь, когда они стали доступны в базовой версии, со временем у вас будет возрастать уверенность в том, что вы сможете использовать их, не опасаясь проблем с совместимостью. Для получения дополнительной информации посетите следующие ресурсы:
- Помощники по итераторам в б��оге V8 .
- Список вспомогательных методов итератора на MDN .
- Предложение помощников итератора TC39 .
Опубликовано: 1 мая 2025 г.
Если вы пишете JavaScript, то итерации — это то, чем вы часто занимаетесь. Вы либо пишете циклы для работы с массивами, либо используете методы функционального программирования, такие как map
, filter
и другие подобные методы, для обработки всех видов данных.
Однако одним камнем преткновения при использовании этих методов является то, что они доступны только для массивов. Если вы хотите использовать их в итерации, вам придется преобразовать ее в массив, а затем вызвать нужный вам метод. Это может быть расточительно, или в тех случаях, когда интерпретируемый объект содержит бесконечный набор данных с использованием функций-генераторов , это невозможно. Однако теперь, когда помощники итераторов стали доступны в рамках Baseline Newly, эта возможность наконец-то доступна во всех браузерах.
Как работают помощники итератора?
Помощники итератора предоставляются путем определения новых методов в prototype
объекта Iterator
. Эти методы соответствуют многим методам функционального программирования, которые вы привыкли использовать, например, map
, filter
, reduce
и другим подобным методам.
Например, вы можете использовать вспомогательный итератор в методе filter
для фильтрации элементов списка по содержимому их innerText
для коллекции узлов DOM, которое затем можно использовать позже в цикле for
:
const posts = document.querySelectorAll("ul#specific-list > li")
.values()
.filter(item => item.textContent.includes("kiwi"));
// For-of loops can only be used on iterables, which `posts` is!
for (const post of posts) {
console.log(post.textContent);
}
В предыдущем фрагменте кода вспомогательный метод итератора для filter
используется для перебора всех элементов <li>
в определенном элементе <ul>
. Критерием фильтрации является то, что текстовое содержимое каждого элемента должно содержать подстроку "kiwi"
.
Помощники-итераторы также можно использовать с функциями-генераторами. В этом примере функция-генератор, которая вычисляет факториалы , но использует вспомогательный итератор для фильтрации значений до тех, которые делятся на 8, и записывает первые пять отфильтрованных значений на консоль:
function* factorials (n) {
let result = 1;
for (let i = 1; i <= n; i++) {
result *= i;
yield result;
}
}
const filteredFactorials = factorials(128).filter(x => x % 8 === 0);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
В частности, предыдущий фрагмент кода является примером того, что было бы невозможно с помощью помощников итераторов, поскольку число факториалов бесконечно, и иначе вы не сможете преобразовать их в массив!
В зависимости от вашей ситуации помощники-итераторы имеют большой потенциал — и они доступны для каждого из этих итерируемых методов:
Возможности использования помощников итераторов огромны и могут значительно улучшить эргономику разработчиков. Теперь, когда они стали доступны в базовой версии, со временем у вас будет возрастать уверенность в том, что вы сможете использовать их, не опасаясь проблем с совместимостью. Для получения дополнительной информации посетите следующие ресурсы:
- Помощники по итераторам в блоге V8 .
- Список вспомогательных методов итератора на MDN .
- Предложение помощников итератора TC39 .
Опубликовано: 1 мая 2025 г.
Если вы пишете JavaScript, то итерации — это то, чем вы часто занимаетесь. Вы либо пишете циклы для работы с массивами, либо используете методы функционального программирования, такие как map
, filter
и другие подобные методы, для обработки всех видов данных.
Однако одним камнем преткновения при использовании этих методов является то, что они доступны только для массивов. Если вы хотите использовать их в итерации, вам придется преобразовать ее в массив, а затем вызвать нужный вам метод. Это может быть расточительно, или в тех случаях, когда интерпретируемый объект содержит бесконечный набор данных с использованием функций-генераторов , это невозможно. Однако теперь, когда помощники итераторов стали доступны в рамках Baseline Newly, эта возможность наконец-то доступна во всех браузерах.
Как работают помощники итераторов?
Помощники итератора предоставляются путем определения новых методов в prototype
объекта Iterator
. Эти методы соответствуют многим методам функционального программирования, которые вы привыкли использовать, например, map
, filter
, reduce
и другим подобным методам.
Например, вы можете использовать вспомогательный итератор в методе filter
для фильтрации элементов списка по содержимому их innerText
для коллекции узлов DOM, которое затем можно использовать позже в цикле for
:
const posts = document.querySelectorAll("ul#specific-list > li")
.values()
.filter(item => item.textContent.includes("kiwi"));
// For-of loops can only be used on iterables, which `posts` is!
for (const post of posts) {
console.log(post.textContent);
}
В предыдущем фрагменте кода вспомогательный метод итератора для filter
используется для перебора всех элементов <li>
в определенном элементе <ul>
. Критерием фильтрации является то, что текстовое содержимое каждого элемента должно содержать подстроку "kiwi"
.
Помощники-итераторы также можно использовать с функциями-генераторами. В этом примере функция-генератор, которая вычисляет факториалы , но использует вспомогательный итератор для фильтрации значений до тех, которые делятся на 8, и записывает первые пять отфильтрованных значений на консоль:
function* factorials (n) {
let result = 1;
for (let i = 1; i <= n; i++) {
result *= i;
yield result;
}
}
const filteredFactorials = factorials(128).filter(x => x % 8 === 0);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
В частности, предыдущий фрагмент кода является примером того, что было бы невозможно с помощью помощников итераторов, поскольку число факториалов бесконечно, и иначе вы не сможете преобразовать их в массив!
В зависимости от вашей ситуации помощники-итераторы имеют большой потенциал — и они доступны для каждого из этих итерируемых методов:
Возможности использования помощников итераторов огромны и могут значительно улучшить эргономику разработчиков. Теперь, когда они стали доступны в базовой версии, со временем у вас будет возрастать уверенность в том, что вы сможете использовать их, не опасаясь проблем с совместимостью. Для получения дополнительной информации посетите следующие ресурсы:
- Помощники по итераторам в блоге V8 .
- Список вспомогательных методов итератора на MDN .
- Предложение помощников итератора TC39 .
Опубликовано: 1 мая 2025 г.
Если вы пишете JavaScript, то итерации — это то, чем вы часто занимаетесь. Вы либо пишете циклы для работы с массивами, либо используете методы функционального программирования, такие как map
, filter
и другие подобные методы, для обработки всех видов данных.
Однако одним камнем преткновения при использовании этих методов является то, что они доступны только для массивов. Если вы хотите использовать их в итерации, вам придется преобразовать ее в массив, а затем вызвать нужный вам метод. Это может быть расточительно, или в тех случаях, когда интерпретируемый объект содержит бесконечный набор данных с использованием функций-генераторов , это невозможно. Однако теперь, когда помощники итераторов стали доступны в рамках Baseline Newly, эта возможность наконец-то доступна во всех браузерах.
Как работают помощники итератора?
Помощники итератора предоставляются путем определения новых методов в prototype
объекта Iterator
. Эти методы соответствуют многим методам функционального программирования, которые вы привыкли использовать, например, map
, filter
, reduce
и другим подобным методам.
Например, вы можете использовать вспомогательный итератор в методе filter
для фильтрации элементов списка по содержимому их innerText
для коллекции узлов DOM, которое затем можно использовать позже в цикле for
:
const posts = document.querySelectorAll("ul#specific-list > li")
.values()
.filter(item => item.textContent.includes("kiwi"));
// For-of loops can only be used on iterables, which `posts` is!
for (const post of posts) {
console.log(post.textContent);
}
В предыдущем фрагменте кода вспомогательный метод итератора для filter
используется для перебора всех элементов <li>
в определенном элементе <ul>
. Критерием фильтрации является то, что текстовое содержимое каждого элемента должно содержать подстроку "kiwi"
.
Помощники-итераторы также можно использовать с функциями-генераторами. В этом примере функция-генератор, которая вычисляет факториалы , но использует вспомогательный итератор для фильтрации значений до значений, кратных 8, и записывает первые пять отфильтрованных значений на консоль:
function* factorials (n) {
let result = 1;
for (let i = 1; i <= n; i++) {
result *= i;
yield result;
}
}
const filteredFactorials = factorials(128).filter(x => x % 8 === 0);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
В частности, предыдущий фрагмент кода является примером того, что было бы невозможно с помощью помощников итераторов, поскольку число факториалов бесконечно, и иначе вы не сможете преобразовать их в массив!
В зависимости от вашей ситуации помощники-итераторы имеют большой потенциал — и они доступны для каждого из этих итерируемых методов:
Возможности использования помощников итераторов огромны и могут значительно улучшить эргономику разработчиков. Теперь, когда они доступны в базовой версии, со временем у вас будет возрастать уверенность в том, что вы сможете использовать их, не опасаясь проблем с совместимостью. Для получения дополнительной информации посетите следующие ресурсы: