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

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

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

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

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

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

JS метод Array.findIndex()

Опис

Метод findIndex() надає інструмент для знаходження індексу першого елемента в масиві, який відповідає певній умові. Для цього в нього передається callback-функція. Ця функція має повертати true або false для кожного елемента, залежно від його відповідності заданій умові. Перший елемент, для якого callback-функція поверне true, визначає результат виконання методу findIndex().

Сам метод findIndex() не змінює масив, на якому його викликали. Але важливо пам'ятати, що функція, передана як callbackFn, може вносити зміни в цей масив. При цьому:

  • callbackFn не буде працювати з елементами, доданими після початку роботи методу findIndex().
  • Індекси, які вже були оброблені, при змінах в них не будуть повторно оброблятися callbackFn.
  • Якщо елемент масиву, що ще не був оброблений, зміниться в процесі роботи callbackFn, його значення буде відповідати стану на момент його обробки. Елементи, які були видалені, опрацьовуються як undefined.

Приклад:

let numbers = [5, 12, 8, 130, 44];
let isLargeNumber = (element) => element > 13;
let index = numbers.findIndex(isLargeNumber);
console.log(index); // повертає 3

У цьому прикладі ми шукаємо перший елемент у масиві numbers, який більший ніж 13. Як результат роботи методу ми отримуємо значення 3, бо елемент під індексом 3 (130) є першим, який відповідає умові "більше ніж 13".

Нотатка:

Якщо немає елементів, що відповідають умові, метод findIndex() поверне -1. Тому важливо перевіряти результат методу на -1, щоб уникнути помилок.

Нотатка:

Метод findIndex() універсальний. Він передбачає, що значення this має властивість length та інші властивості з цілими числовими ключами.

Синтаксис

findIndex(callbackFn)
findIndex(callbackFn, thisArg)

Параметри

*callbackFn

Функція, яка виконується для кожного елемента масиву. Вона повинна повертати значення істиності (truthy), щоб показати, що був знайдений відповідний елемент, і значення хибності (falsy) у протилежному випадку.

Функція callbackFn викликається з наступними аргументами:

  • element: поточний елемент, який обробляється у масиві;
  • index: індекс поточного елемента, який обробляється у масиві;
  • array: масив, на якому було викликано метод findIndex().
thisArg

Значення, яке використовується як this під час виконання функції callbackFn.

Return

index

Індекс першого елемента в масиві, який пройшов перевірку. В протилежному випадку, -1.

Переглядачі

Переглядач

45

25

8

32

12

Переглядач

45

45

4

8

Переглядач

4.0.0

1.0

Приклади


Приклад використовує метод findIndex() для знаходження індексу першого елемента в масиві, яке є числом більшим за 13. Результат виводиться на сторінку.

Приклад повертає індекс першого елемента в масиві, який є простим числом, або -1, якщо простого числа немає.

function isPrime(element) {
  if (element % 2 === 0 || element < 2) {
    return false;
  }
  for (let factor = 3; factor <= Math.sqrt(element); factor += 2) {
    if (element % factor === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, не знайдено
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (елемент array[2] це 7)

Використання findIndex() на розріджених масивах. Ви можете шукати undefined у розрідженому масиві та отримати індекс порожнього слоту.

console.log([1, , 3].findIndex((x) => x === undefined)); // 1

Метод findIndex() зчитує властивість length цього об'єкта та далі отримує доступ до кожної властивості, ключ якої є невід'ємним цілим числом, меншим за length.

const arrayLike = {
  length: 3,
  "-1": 0.1, // ігнорується findIndex(), оскільки -1 < 0
  0: 2,
  1: 7.3,
  2: 4,
};
console.log(
  Array.prototype.findIndex.call(arrayLike, (x) => !Number.isInteger(x)),
); // 1