Перейти к содержимому

Что такое indexof

  • автор:

indexOf()

Метод indexOf() ищет в массиве указанный элемент и возвращает его позицию.
Поиск начнется с указанной позиции или сначала массива, если начальная позиция не указана. Завершается поиск в конце массива.
Возвращает -1, если элемент не найден.
Если элемент присутствует несколько раз, метод indexOf() возвращает позицию первого найденного совпадения.

Примечание: индекс первого элемента равен 0, второго -1 и т.д.
Совет. Если вы хотите выполнить поиск с конца массива в начало, используйте метод lastIndexOf() .

Поддержка браузеров

Синтаксис

Значения параметров

Параметр Описание
item Обязательный. Элемент для поиска
start Необязательный. Индекс, с которого следует начать поиск. При указании отрицательного значения, поиск начнется с заданной позиции, считая от конца массива. Поиск осуществляется по направлению к концу массива.

Технические подробности

Возвращаемое значение: Число, представляющее позицию указанного элемента, в противном случае возвращает -1
Версия JavaScript: ECMAScript 3

Дополнительные примеры

Найти в массиве индекс элемента “Green”, начиная со второй позиции:

var colors = ["Green", "Pink", "Blue", "Green"]; var result = colors.indexOf("Green", 2); // 3

Array.prototype.indexOf()

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

Синтаксис

arr.indexOf(searchElement[, fromIndex = 0])

Параметры

Искомый элемент в массиве.

Индекс, с которого начинать поиск. Если индекс больше или равен длине массива, возвращается -1, что означает, что массив даже не просматривается. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от начала к концу. Если рассчитанный индекс оказывается меньше 0, поиск ведётся по всему массиву. Значение по умолчанию равно 0, что означает, что просматривается весь массив.

Описание

Метод indexOf() сравнивает искомый элемент searchElement с элементами в массиве, используя строгое сравнение (en-US) (тот же метод используется оператором === , тройное равно).

Примеры

Пример: использование indexOf()

В следующем примере indexOf() используется для поиска значений в массиве.

var array = [2, 5, 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() используется для поиска всех индексов элемента в указанном массиве, которые с помощью push() добавляются в другой массив.

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

Полифил

Метод indexOf() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать indexOf() в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что TypeError и Math.abs() имеют свои первоначальные значения.

// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.14 // Ссылка (en): http://es5.github.io/#x15.4.4.14 // Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.14 if (!Array.prototype.indexOf)  Array.prototype.indexOf = function (searchElement, fromIndex)  var k; // 1. Положим O равным результату вызова ToObject с передачей ему // значения this в качестве аргумента. if (this == null)  throw new TypeError('"this" is null or not defined'); > var O = Object(this); // 2. Положим lenValue равным результату вызова внутреннего метода Get // объекта O с аргументом "length". // 3. Положим len равным ToUint32(lenValue). var len = O.length >>> 0; // 4. Если len равен 0, вернём -1. if (len === 0)  return -1; > // 5. Если был передан аргумент fromIndex, положим n равным // ToInteger(fromIndex); иначе положим n равным 0. var n = +fromIndex || 0; if (Math.abs(n) === Infinity)  n = 0; > // 6. Если n >= len, вернём -1. if (n >= len)  return -1; > // 7. Если n >= 0, положим k равным n. // 8. Иначе, n // Если k меньше нуля 0, положим k равным 0. k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); // 9. Пока k < len, будем повторятьwhile (k  len)  // a. Положим Pk равным ToString(k). // Это неявное преобразование для левостороннего операнда в операторе in // b. Положим kPresent равным результату вызова внутреннего метода // HasProperty объекта O с аргументом Pk. // Этот шаг может быть объединён с шагом c // c. Если kPresent равен true, выполним // i. Положим elementK равным результату вызова внутреннего метода Get // объекта O с аргументом ToString(k). // ii. Положим same равным результату применения // Алгоритма строгого сравнения на равенство между // searchElement и elementK. // iii. Если same равен true, вернём k. if (k in O && O[k] === searchElement)  return k; > k++; > return -1; >; > 

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

Specification
ECMAScript Language Specification
# sec-array.prototype.indexof

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

BCD tables only load in the browser

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

  • Array.prototype.lastIndexOf()
  • TypedArray.prototype.indexOf() (en-US)

Что такое indexof

Метод indexOf() возвращает индекс первого вхождения данной подстроки в строке.

const message = "JavaScript is not Java"; // возврат индекса 'v' в первом вхождении 'va' const index = message.indexOf("va"); console.log("index: " + index); // index: 2

Синтаксис indexOf()

Синтаксис метода indexOf() следующий:

str.indexOf(searchValue, fromIndex);

Где str — это строка.

Параметры indexOf()

Метод indexOf() принимает:

  • searchValue
    • значение для поиска в строке. Если строка не указана явно, будет искаться значение «undefined».

    Возвращаемое значение indexOf()

    • Возвращает первый индекс значения в строке, если оно присутствует хотя бы один раз.
    • Возвращает -1, если значение не найдено в строке.

    Примечание: метод indexOf() чувствителен к регистру.

    Для пустой строки searchValue и fromIndex меньше длины строки, indexOf возвращает значение, равное fromIndex .

    Аналогично, для пустой строки searchValue и fromIndex превышающей длину строки, indexOf возвращает длину строки.

    "Purpleschool JavaScript".indexOf("", 0); // возвращает 0 "Purpleschool JavaScript".indexOf("", 3); // возвращает 3 // длина строки здесь равна 20 "Purpleschool JavaScript".indexOf("", 25); // возвращает 20 "Purpleschool JavaScript".indexOf("", 21); // возвращает 20

    Примеры

    Пример 1: Использование метода indexOf()

    var str = "JavaScript is the world's most misunderstood programming language."; // indexOf() возвращает первое вхождение var index1 = str.indexOf("language"); console.log(index1); // 57 var index2 = str.indexOf("p"); console.log(index2); // 8 // второй аргумент указывает начальный индекс поиска var index3 = str.indexOf("p", 9); console.log(index3); // 45 // indexOf возвращает -1, если ничего не найдено var index4 = str.indexOf("Python"); console.log(index4); // -1

    Вывод в консоль:

    57 8 45 -1

    Пример 2: Поиск всех вхождений элемента

    function findAllIndex(string, value) < indices = []; var currentIndex = string.indexOf(value); while (currentIndex != -1) < indices.push(currentIndex); currentIndex = string.indexOf(value, currentIndex + value.length); >return indices; > var str = "JavaScript is as related to Java as Carpenter is to Carpet."; var occurance1 = findAllIndex(str, "J"); console.log(occurance1); // [ 0, 28 ] var occurance2 = findAllIndex(str, "Carpet"); console.log(occurance2); // [ 52 ] var occurance3 = findAllIndex(str, "x"); console.log(occurance3); // []

    Вывод в консоль:

    [ 0, 28 ] [ 52 ] []

    Метод indexOf

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

    Синтаксис

    строка.indexOf(что ищем, [откуда начинать поиск]);

    Пример

    Давайте найдем позицию первого вхождения подстроки:

    let str = ‘ab cd cd cd ef’; let res = str.indexOf(‘cd’); console.log(res);

    Результат выполнения кода:

    Пример

    Давайте укажем позицию, с которой начинать поиск:

    let str = ‘ab cd cd cd ef’; let res = str.indexOf(‘cd’, 4); console.log(res);

    Результат выполнения кода:

    Пример

    Теперь поищем несуществующую подстроку:

    let str = ‘ab cd cd cd ef’; let res = str.indexOf(‘xx’); console.log(res);

    Результат выполнения кода:

    Пример

    Давайте поищем подстроку, указанную в неподходящем для текущей строки регистре:

    let str = ‘ab cd cd cd ef’; let res = str.indexOf(‘CD’); console.log(res);

    Результат выполнения кода:

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

    • метод startsWith ,
      который проверяет начало строки
    • метод endsWith ,
      который проверяет конец строки
    • метод lastIndexOf ,
      который ищет последнее вхождение подстроки
    • метод includes ,
      который ищет строку
    • метод at ,
      который ищет символ строки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *