Array.prototype.indexOf()

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

Спробуйте його в дії

Синтаксис

indexOf(searchElement)
indexOf(searchElement, fromIndex)

Параметри

searchElement (елемент пошуку)

Шуканий у масиві елемент.

fromIndex (від індексу) Необов'язкове

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

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

Повернене значення

Перший індекс searchElement в масиві; -1, якщо нічого не знайдено.

Опис

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

Метод indexOf() пропускає порожні комірки в розріджених масивах.

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

Приклади

Використання indexOf()

У наступному прикладі 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

Не можна використовувати indexOf() для пошуку NaN.

const array = [NaN];
array.indexOf(NaN); // -1

Пошук усіх входжень елемента

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

Визначення, чи знаходиться елемент у масиві, чи ні, та оновлення масиву

function updateVegetablesCollection(veggies, veggie) {
  if (veggies.indexOf(veggie) === -1) {
    veggies.push(veggie);
    console.log(`Нова овочева колекція: ${veggies}`);
  } else {
    console.log(`${veggie} уже є в овочевій колекції.`);
  }
}

const veggies = [
  "картопля",
  "помідор",
  "червоний гострий перець",
  "зелений болгарський перець",
];

updateVegetablesCollection(veggies, "шпинат");
// Нова колекція veggies: картопля,помідор,червоний гострий перець,зелений болгарський перець,шпинат
updateVegetablesCollection(veggies, "шпинат");
// шпинат уже є в овочевій колекції.

Використання indexOf() на розріджених масивах

Не можна використовувати indexOf для пошуку порожніх комірок в розріджених масивах.

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

Виклик indexOf() на об'єктах-немасивах

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

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

Специфікації

Сумісність з браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
indexOf
Chrome Full support 1
Edge Full support 12
Firefox Full support 1.5
Internet Explorer Full support 9
Opera Full support 9.5
Safari Full support 3
WebView Android Full support 37
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також