jQuery функция $.inArray()
jQuery утилитыОпределение и применение
jQuery функция $.inArray() производит поиск переданного значения в массиве и возвращает его индекс при нахождении, или значение -1, если не найден.
Функция $.inArray() схожа с нативным методом JavaScript indexOf() объекта Array, который по аналогии возвращает -1, когда он не находит совпадение.
Обращаю Ваше внимание, что функция $.inArray() использует оператор строгого сравнения (===) при сравнении искомого элемента и элементов массива.
jQuery синтаксис:
Синтаксис 1.2: $.inArray( value, arr ); $.inArray( value, arr, fromIndex ) value - Anything arr - Array fromIndex - Number
Добавлен в версии jQuery
1.2Значения параметров
Параметр | Описание |
---|---|
value | Значение, которое требуется найти внутри массива. Обязательное значение. |
arr | Массив в котором происходит поиск необходимого значения. |
fromIndex | Индекс массива с которого начинается поиск. Значение по умолчанию равно 0 (поиск осуществляется по всему массиву). Допускается использование отрицательных значений, в этом случае индекс с которого будет произведено сравнение элементов будет расчитан по следующей формуле: length (длина массива) + fromIndex. Необязательный аргумент. |
Пример использования
const arr = [1, 2, 3, "a", "b", "c"]; // инициализируем переменную, содержащую массив $.inArray( "a", arr ); // возвращаемое значение 3 $.inArray( "d", arr ); // возвращаемое значение -1 (значение не найдено в массиве) $.inArray( "b", arr, 3 ); // возвращаемое значение 4 $.inArray( 2, arr, 2 ); // возвращаемое значение -1 (значение не найдено в массиве) $.inArray( 1, arr, -6 ); // возвращаемое значение 0 $.inArray( 1, arr, -5 ); // возвращаемое значение -1 (значение не найдено в массиве)
В следующем примере мы рассмотрим с Вами как продолжить поиск искомого элемента в массиве после первого и последующих совпадений, вплоть до конца массива. Это позволит нам сравнить все элементы массива по определенному индексу на предмет наличия искомого элемента:
let indexes = []; // инициализируем переменную, содержащую пустой массив const myArray = ['z', 'v', 'z', 'v', 'z', 'v']; // инициализируем переменную, содержащую массив строковых значений по которому будет произведен поиск const searchElement = 'z'; // инициализируем строковую переменную (значение переменной будем искать внутри массива myArray) let index = $.inArray(searchElement, myArray); // инициализируем переменную, содержащую индекс первого искомого элемента (значение переменной searchElement) внутри массива myArray while ( index != -1 ) { // пока значение переменной index не будет равно -1 indexes.push( index ); // с использованием метода push() добавляем в переменную indexes значение переменной index index = $.inArray(searchElement, myArray, index + 1); // изменяем значение переменной путем поиска необходимого элемента далее в массиве (если найден - индекс элемента, если нет то -1) } console.log( indexes ); // переменная содержит значение [0, 2, 4]
Обратите внимание на то, что если вы ищете внутри массива NaN (Not a number - не число), независимо от наличия этого значения в массиве возвращаемое значение будет -1. Это поведение метода учтено в нативном методе includes(), добавленном в ECMAScript 2016, он решает подобную задачу, но возвращает логическое значение:
const arr = [NaN]; // инициализируем переменную, содержащую одно значение NaN arr.indexOf( NaN ); // возвращаемое значение -1 (элемент не найден) $.inArray( NaN, arr ); // возвращаемое значение -1 (элемент не найден) arr.includes( NaN ); // возвращаемое значение true (элемент найден)jQuery утилиты