jQuery функция $.inArray()
Определение и применение
jQuery функция $.inArray() производит поиск переданного значения в массиве и возвращает его индекс при нахождении, или значение -1, если не найден.
Функция $.inArray() схожа с нативным методом JavaScript
indexOf()
объекта
Array, который по аналогии возвращает -1, когда он не находит совпадение.
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. Необязательный аргумент. |
Пример использования
Функция $.inArray() — пример 1
Нажмите ▶. Измените JavaScript и запустите пример повторно. Используется jQuery 3.1.1.
index.html
<p>Результат выполнения выводится в консоль под примером.</p>
main.js
const arr = [1, 2, 3, 'a', 'b', 'c'] // инициализируем переменную, содержащую массив
console.log($.inArray('a', arr)) // возвращаемое значение 3
console.log($.inArray('d', arr)) // возвращаемое значение -1 (значение не найдено в массиве)
console.log($.inArray('b', arr, 3)) // возвращаемое значение 4
console.log($.inArray(2, arr, 2)) // возвращаемое значение -1 (значение не найдено в массиве)
console.log($.inArray(1, arr, -6)) // возвращаемое значение 0
console.log($.inArray(1, arr, -5)) // возвращаемое значение -1 (значение не найдено в массиве)
style.css
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
overflow-wrap: anywhere;
}
img,
input,
select,
textarea,
button {
max-width: 100%;
}
Нажмите ▶, чтобы запустить пример.
В следующем примере мы рассмотрим с Вами как продолжить поиск искомого элемента в массиве после первого и последующих совпадений, вплоть до конца массива. Это позволит нам сравнить все элементы массива по определенному индексу на предмет наличия искомого элемента:
Функция $.inArray() — пример 2
Нажмите ▶. Измените JavaScript и запустите пример повторно. Используется jQuery 3.1.1.
index.html
<p>Результат выполнения выводится в консоль под примером.</p>
main.js
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]
style.css
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
overflow-wrap: anywhere;
}
img,
input,
select,
textarea,
button {
max-width: 100%;
}
Нажмите ▶, чтобы запустить пример.
Обратите внимание на то, что если вы ищете внутри массива NaN (Not a number - не число),
независимо от наличия этого значения в массиве возвращаемое значение будет -1. Это поведение метода учтено в
нативном методе
includes(), добавленном в ECMAScript 2016, он решает подобную задачу, но возвращает логическое значение:
Функция $.inArray() — пример 3
Нажмите ▶. Измените JavaScript и запустите пример повторно. Используется jQuery 3.1.1.
index.html
<p>Результат выполнения выводится в консоль под примером.</p>
main.js
const arr = [NaN] // инициализируем переменную, содержащую одно значение NaN
console.log(arr.indexOf(NaN)) // возвращаемое значение -1 (элемент не найден)
console.log($.inArray(NaN, arr)) // возвращаемое значение -1 (элемент не найден)
arr.includes(NaN) // возвращаемое значение true (элемент найден)
style.css
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
overflow-wrap: anywhere;
}
img,
input,
select,
textarea,
button {
max-width: 100%;
}
Нажмите ▶, чтобы запустить пример.