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".
- Нотатка
-
Якщо немає елементів, що відповідають умові, метод
автор: BondfindIndex()поверне-1. Тому важливо перевіряти результат методу на-1, щоб уникнути помилок. - Нотатка
-
Метод
автор: BondfindIndex()універсальний. Він передбачає, що значенняthisмає властивістьlengthта інші властивості з цілими числовими ключами.
Синтаксис
findIndex(callbackFn)
findIndex(callbackFn, thisArg)
Параметри
callbackFn-
Функція, яка виконується для кожного елемента масиву. Вона повинна повертати значення істиності (truthy), щоб показати, що був знайдений відповідний елемент, і значення хибності (falsy) у протилежному випадку.
Функція
callbackFnвикликається з наступними аргументами:element: поточний елемент, який обробляється у масиві;index: індекс поточного елемента, який обробляється у масиві;array: масив, на якому було викликано методfindIndex().
thisArg-
Значення, яке використовується як
автор: Bondthisпід час виконання функціїcallbackFn.
Повернення
index-
Індекс першого елемента в масиві, який пройшов перевірку. В протилежному випадку,
автор: Bond-1.
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 45 | 25 | 8 | 32 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 45 | 45 | 4 | 8 |
| Переглядач | ||
|---|---|---|
| 4.0.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
Приклад повертає індекс першого елемента в масиві, який є простим числом, або -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() для знаходження індексу першого елемента в масиві, яке є числом більшим за 13. Результат виводиться на сторінку.
Метод 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
Коментарі
Коментарів ще немає — будьте першим!