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

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

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

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

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

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

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).

Нотатка:

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

Нотатка:

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

Нотатка:

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

Нотатка:

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

Нотатка:

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

Нотатка:

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

Синтаксис

indexOf(searchElement)
indexOf(searchElement, fromIndex)

Параметри

*searchElement

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

fromIndex

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

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

Return

integer

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

Переглядачі

Переглядач

1

1.5

3

9.5

12

Переглядач

37

18

4

1

Переглядач

0.10.0

1.0

Приклади


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

Приклад використовує 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

У цьому прикладі ми знаходимо всі входження елемента "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]

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

console.log([1, , 3].indexOf(undefined)); // -1

У цьому прикладі ми використовуємо метод 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