JS метод Array.indexOf()


Опис

Метод indexOf() пропонує простий спосіб визначення позиції елемента в масиві. Він порівнює searchElement з елементами масиву, використовуючи строгий принцип рівності — такий самий, як і у оператора ===. Цікаво, що значення NaN при такому порівнянні завжди вважається нерівним будь-якому іншому значенню, навіть самому собі. Отже, при спробі знайти NaN метод indexOf() завжди поверне -1.

Основна робота методу полягає в тому, що він повертає індекс першого входження searchElement у масив, або -1, якщо такого елемента немає. Таким чином, легко визначити, чи містить масив певний елемент, порівнюючи результат indexOf() з -1.

Приклад:

let fruits = ["apple", "banana", "cherry"];
let index = fruits.indexOf("banana");
console.log(index); // 1

У цьому прикладі ми шукаємо індекс елемента banana в масиві fruits. Метод indexOf() повертає значення 1, оскільки banana є другим елементом масиву (індексація починається з 0).

автор: Bond

Нотатка

Метод indexOf() приймає другий необов'язковий параметр fromIndex, який визначає початкову позицію для пошуку. Якщо цей параметр не вказано, пошук автоматично почнеться з нульового індексу. Якщо вам потрібно розпочати пошук, скажімо, з третьої позиції, ви можете використовувати наступний синтаксис: myArray.indexOf('apple', 2).

автор: Bond
Нотатка

Важливо пам'ятати, що indexOf() використовує строгу рівність (===) для порівняння елементів. Це означає, що він порівнює значення елементів за типом та значенням. Для ілюстрації: якщо у вашому масиві є елемент з числовим значенням 5, запит myArray.indexOf('5') поверне результат -1, адже хоча числове 5 та рядкове '5' можуть виглядати однаково, вони є різними типами даних.

автор: Bond
Нотатка

Важливо пам'ятати, що indexOf() порівнює елементи за їхніми значеннями, а не за їхніми посиланнями. Тому, наприклад, при пошуку об'єкта в масиві об'єктів, indexOf() не зможе знайти об'єкт, навіть якщо його вміст ідентичний шуканому, якщо вони є різними об'єктами в пам'яті.

автор: Bond
Нотатка

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

автор: Bond
Нотатка

indexOf() є універсальним методом, що вимагає наявності властивості length та інших властивостей з цілочисельними ключами в this.

автор: Bond
Нотатка

Зверніть увагу, що indexOf() ігнорує порожні слоти в розріджених масивах.

автор: Bond

Синтаксис

indexOf(searchElement)
indexOf(searchElement, fromIndex)

Параметри

searchElement

Елемент, який потрібно знайти в масиві.

автор: Bond

fromIndex

Індекс, з якого почати пошук, перетворений у ціле число.

  • Від'ємний індекс рахується з кінця масиву - якщо fromIndex < 0, використовується fromIndex + array.length. Зверніть увагу, що в цьому випадку масив все ще проглядається з переду назад.
  • Якщо fromIndex < -array.length або fromIndex пропущено, використовується 0, що спричинює пошук по всьому масиву.
  • Якщо fromIndex >= array.length, масив не проглядається, і повертається -1.
автор: Bond

Повернення

integer

Індекс першого елемента (який дорівнює searchElement) в масиві. Повертає -1, якщо елемент не знайдено.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 1.5 3 9.5 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
37 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми використовуємо метод indexOf() на об'єкті arrayLike, який не є масивом. Ми використовуємо call() для виклику методу indexOf() на об'єкті arrayLike, як будто це метод масиву. Метод indexOf() повертає індекс першого входження шуканого елемента. У нашому випадку, ми шукаємо значення 2 і 5. Оскільки об'єкт arrayLike має властивість length, рівну 3, пошук за межами довжини об'єкта повертає значення -1.

const arrayLike = {
  length: 3,
  0: 2,
  1: 3,
  2: 4,
  3: 5, // ігнорується indexOf(), оскільки length дорівнює 3
};
console.log(Array.prototype.indexOf.call(arrayLike, 2));
// 0
console.log(Array.prototype.indexOf.call(arrayLike, 5));
// -1
автор: Bond

У цьому прикладі ми використовуємо метод indexOf() для пошуку індексу певного елемента в масиві. Метод indexOf() повертає перший індекс входження шуканого елемента або -1, якщо елемент не знайдено.

автор: Bond

У цьому прикладі ми використовуємо indexOf() для пошуку значення undefined у масиві [1, , 3]. Оскільки між другим і третім елементами є пустий слот, пошук повертає значення -1. Ви можете скопіювати цей код для використання у своєму довіднику.

console.log([1, , 3].indexOf(undefined)); // -1
автор: Bond

Приклад використовує indexOf() для пошуку значень у масиві.

const array = [2, 9, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
array.indexOf(9, 2); // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0
автор: Bond

У цьому прикладі ми знаходимо всі входження елемента "a" у масиві array і зберігаємо їх індекси в indices. В результаті виводимо масив індексів [0, 2, 4].

const indices = [];
const array = ["a", "b", "a", "c", "a", "d"];
const element = "a";
let idx = array.indexOf(element);
while (idx !== -1) {
  indices.push(idx);
  idx = array.indexOf(element, idx + 1);
}
console.log(indices);
// [0, 2, 4]
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід