Spec-Zone.ru › JavaScript

Array.prototype.indexOf()

Базовый Широко доступен

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Метод indexOf() экземпляров Array возвращает первый индекс, по которому заданный элемент может быть найден в массиве, или -1, если он отсутствует.

Попробовать

const beasts = ["ant", "bison", "camel", "duck", "bison"];

console.log(beasts.indexOf("bison"));
// Expected output: 1

// Start from index 2
console.log(beasts.indexOf("bison", 2));
// Expected output: 4

console.log(beasts.indexOf("giraffe"));
// Expected output: -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() является обобщенным (generic). Он ожидает, что значение 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";
let 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(`New veggies collection is: ${veggies}`);
  } else {
    console.log(`${veggie} already exists in the veggies collection.`);
  }
}

const veggies = ["potato", "tomato", "chillies", "green-pepper"];

updateVegetablesCollection(veggies, "spinach");
// New veggies collection is: potato,tomato,chillies,green-pepper,spinach
updateVegetablesCollection(veggies, "spinach");
// spinach already exists in the veggies collection.

Использование indexOf() на разреженных массивах

Вы не можете использовать indexOf() для поиска пустых слотов в разреженных массивах.

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

Вызов indexOf() на объектах, не являющихся массивами

Метод indexOf() считывает свойство length объекта this, а затем обращается к каждому свойству, ключ которого является неотрицательным целым числом, меньшим чем length.

const arrayLike = {
  length: 3,
  0: 2,
  1: 3,
  2: 4,
  3: 5, // ignored by indexOf() since length is 3
};
console.log(Array.prototype.indexOf.call(arrayLike, 2));
// 0
console.log(Array.prototype.indexOf.call(arrayLike, 5));
// -1

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

Спецификация
ECMAScript® 2027 Language Specification
# sec-array.prototype.indexof

Совместимость с браузерами

Десктоп Мобильные Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
indexOf
1
12
1.5
9.5
3
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

Смотрите также

  • Полифил Array.prototype.indexOf в core-js
  • Полифил es-shims Array.prototype.indexOf
  • Руководство по Индексированным коллекциям
  • Array
  • Array.prototype.findIndex()
  • Array.prototype.findLastIndex()
  • Array.prototype.lastIndexOf()
  • TypedArray.prototype.indexOf()
  • String.prototype.indexOf()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API