Index js что это
Перейти к содержимому

Index js что это

  • автор:

indexOf()

indexOf() — это метод в JavaScript, который ищет указанный элемент в массиве или строке. Если значение найдено, вернёт индекс этого элемента; если нет, то вернёт -1. При количестве вхождений больше одного вернёт индекс первого.

Синтаксис

 let string = ['a', 'b', 'c', 'a'] string.indexOf('value', index) 

value — значение элемента, который ищем в массиве или строке

index Необязательный — указывает, с какого индекса начинать поиск. По умолчанию равен 0.

Вызов метода indexOf() начинается с объекта (строки или массива), в котором производится поиск. Затем следует точка, после которой указывается название метода, а в круглых скобках — значение value , которое нужно найти.

 let mySkills = ['HTML', 'CSS', 'JavaScript', 'React'] mySkills.indexOf('JavaScript') // 2 

То же самое можем провернуть и со строкой.

 let mySkills = 'HTML, CSS, JavaScript, React' mySkills.indexOf('JavaScript') // 11 

Искать можно также отдельные буквы и символы.

 mySkills.indexOf(',') // 4 mySkills.indexOf('R') // 23 

Если метод не находит наше значение, результатом будет -1.

 mySkills.indexOf('Angular') // -1 

Стоит учитывать, что метод использует регистрозависимый поиск. Это означает, что indexOf() будет искать точное соответствие указанной строке, включая регистр.

 let mySkills = ['HTML', 'CSS', 'JavaScript', 'React'] mySkills.indexOf('javascript') // -1 

Если массив или строка пустая, метод вернет -1.

 let mySkills = [] mySkills.indexOf('R') // -1 

indexOf() как условие

Используя метод indexOf() в условиях, например при работе с if , стоит учитывать, что если результатом проверки будет 0, код может интерпретировать это как false и вызвать нежелательное поведение.

 let mySkills = ['HTML', 'CSS', 'JavaScript', 'React'] mySkills.indexOf('HTML') ? console.log('Нашел') : console.log('Не нашел') 

При записи использовали тернарный оператор. Результатом будет Не нашел, хотя искомая строка явно присутствует. Корректнее будет сформулировать условие, сравнивая результат работы метода с -1, а не с нулём.

 let mySkills = ['HTML', 'CSS', 'JavaScript', 'React'] mySkills.indexOf('HTML') >= 0 ? console.log('Нашел') : console.log('Не нашел') 

Подсчет количества вхождений

 let message = 'Я обязательно запомню, как работает метод indexOf()' let index = message.indexOf('о') let count = 0 while(index !== -1) < count++ index = message.indexOf('о', index + 1) >console.log(count) // 5 

Используя цикл while , и увеличивая позицию, с которой нужно начинать поиск, мы ищем все вхождения. При окончании поиска выводим результат в console.

Проверка на повторы

Предположим, что у нас стоит задача оставить в поле ввода только одну запятую.

  let areaInput = document.querySelector('#area-input') areaInput.addEventListener('input', function () < if (this.value.indexOf(',') !== -1 && this.value.indexOf(',') !== this.value.lastIndexOf(',')) < let index = this.value.lastIndexOf(',') this.value = this.value.slice(0, index) + this.value.slice(index + 1) >>)  

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

Skypro — научим с нуля

Как работает метод indexof в js?

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

const array = [10, -5, 1, 0, 7, -5, -5, 12]; // ищем индекс 7 console.log(array.indexOf(7)); // => 4 // если элемент встречается несколько раз, возвращается индекс самого первого вхождения этого элемента console.log(array.indexOf(-5)); // => 1 // если элемент не найден, возвращается -1 console.log(array.indexOf(2)); // => -1 

Index js что это

Метод 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 ] []

    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)

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

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