Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS метод NodeList.entries()

Загальний опис

NodeList.entries() є вбудованим методом в JavaScript, який повертає новий об'єкт Iterator, що містить пари ключ/значення для всіх елементів NodeList. Цей метод дозволяє ітерувати елементи NodeList за допомогою циклів або інших конструкцій, які підтримують ітерацію.

Метод entries() корисний, коли потрібно отримати як індекси, так і значення елементів NodeList. Він часто використовується у поєднанні з циклами for...of або розподіленням масивів для зручного перебору елементів.

Розглянемо приклад використання entries() з NodeList, що містить всі елементи <p> на веб-сторінці:

const paragraphs = document.querySelectorAll('p');

// Ітерація з використанням циклу for...of
for (const [index, paragraph] of paragraphs.entries()) {
  console.log(`Параграф ${index + 1}: ${paragraph.textContent}`);
}

// Ітерація з використанням розподілення масиву
[...paragraphs.entries()].forEach(([index, paragraph]) => {
  console.log(`Параграф ${index + 1}: ${paragraph.textContent}`);
});

У цьому прикладі ми спочатку отримуємо NodeList всіх елементів <p> за допомогою document.querySelectorAll('p'). Потім ми використовуємо метод entries() для отримання ітератора пар ключ/значення.

У першому випадку ми ітеруємо через ітератор за допомогою циклу for...of. Для кожної ітерації ми деструктуризуємо пару [index, paragraph], де index - індекс поточного елемента, а paragraph - сам елемент. Потім ми виводимо індекс та текстовий вміст елемента в консоль.

У другому випадку ми використовуємо розподілення масиву [...paragraphs.entries()] для конвертації ітератора в масив пар ключ/значення. Потім ми ітеруємо через цей масив за допомогою методу forEach і виконуємо ті самі дії з індексами та елементами.

Метод entries() також корисний для перетворення NodeList на масив пар ключ/значення для подальшого використання з іншими методами масивів, такими як map, filter або reduce. Ось приклад, де ми фільтруємо NodeList за допомогою entries() та filter:

const paragraphs = document.querySelectorAll('p');
const longParagraphs = [...paragraphs.entries()]
  .filter(([index, paragraph]) => paragraph.textContent.length > 100)
  .map(([index, paragraph]) => ({
    index,
    text: paragraph.textContent,
  }));

console.log(longParagraphs);

У цьому прикладі ми спочатку конвертуємо NodeList в масив пар ключ/значення за допомогою entries() та розподілення масиву. Потім ми використовуємо метод filter для вибору лише тих елементів, текстовий вміст яких перевищує 100 символів. Для кожного відфільтрованого елемента ми створюємо новий об'єкт з індексом та текстовим вмістом за допомогою методу map.

Порада:

Якщо ви працюєте з великими наборами даних або часто ітеруєте через NodeList, розгляньте можливість кешування результатів entries() у змінній. Це допоможе уникнути повторного обчислення ітератора під час кожної ітерації.

Порада:

Пам'ятайте, що entries() повертає ітератор, а не масив. Якщо вам потрібно отримати масив індексів та елементів, використовуйте розподілення масиву або метод Array.from(). Наприклад:

const options = document.querySelectorAll('option');
const optionArray = Array.from(options.entries());

Синтаксис

NodeList.entries()

Параметри

Return

iterator

Повертає об'єкт ітератора, який містить пари [ключ, значення] для кожного елемента NodeList. Кожна пара містить індекс елемента та сам елемент.

Переглядачі

Переглядач

51

50

10

38

16

Переглядач

51

51

50

10

Переглядач

-

-

Приклади


У цьому прикладі ми використовуємо метод entries() для ітерації через NodeList, що містить елементи <h2> та <p> всередині тега <header>. Ми відображаємо ці елементи у вигляді списку (<ul>).

У цьому прикладі ми використовуємо метод entries() для ітерації через NodeList елементів <li> всередині елемента <ul>. Ми виводимо індекс та текстовий вміст кожного елемента списку в консоль.

const list = document.querySelector('ul');
const listItems = list.querySelectorAll('li');

for (const [index, item] of listItems.entries()) {
  console.log(`Елемент ${index + 1}: ${item.textContent}`);
}

У цьому прикладі ми використовуємо метод entries() разом із методами масивів filter та map для отримання масиву об'єктів, що містять інформацію про всі посилання (<a>) на веб-сторінці, які ведуть на зовнішні сайти. Ми фільтруємо посилання за допомогою регулярного виразу та створюємо новий масив об'єктів з інформацією про кожне зовнішнє посилання.

const links = document.querySelectorAll('a');
const externalLinks = [...links.entries()]
  .filter(([index, link]) => {
    // Регулярний вираз для перевірки зовнішніх посилань
    const externalPattern = /^https?:\/\/(?!www\.).*$/;
    return externalPattern.test(link.href);
  })
  .map(([index, link]) => ({
    index,
    href: link.href,
    text: link.textContent,
    target: link.target,
  }));

console.log(externalLinks);