Впервые работаю с jQuery.inArray()
и это выглядит странно.
Если объект находится в массиве, он вернет 0, но 0 является ложным в Javascript. Таким образом, будет выведено следующее: «НЕ в массиве»
var myarray = [];
myarray.push("test");
if(jQuery.inArray("test", myarray)) {
console.log("is in array");
} else {
console.log("is NOT in array");
}
Мне придется изменить оператор if на:
if(jQuery.inArray("test", myarray)==0)
Но это делает код нечитаемым. Особенно для тех, кто не знает эту функцию. Они ожидают, что jQuery.inArray («test», myarray) выдает true, когда «test» находится в массиве.
Итак, мой вопрос, почему это делается так? Я действительно не люблю это. Но должна быть веская причина, чтобы сделать это так.
источник
if jQuery.inArray('test', myarray) isn't -1
$.isInArray = function(test,array) { return $.inArray(test, array) !== -1; };
$.isInArray = function(item, array) { return !!~$.inArray(item, array); };
(Я бы держал такой загадочный код в хорошо названной функции, чтобы сохранить намерение, хотя :))if( $.inArray(test, array) > -1) { // do stuff }
$.inArray
возвращает индекс элемента, если он найден, или -1, если это не так - не логическое значение. Так что правильноисточник
Ответ приходит из первого параграфа проверки документации, если результаты больше -1, а не если это правда или ложь.
источник
Правильный способ использования
inArray(x, arr)
- не использовать его вообще , а использовать вместо этогоarr.indexOf(x)
.Официальное стандартное имя также более ясно на тот факт, что возвращаемое значение является индексом, поэтому, если переданный элемент является первым, который вы получите обратно
0
(это неверно в Javascript).(Обратите внимание, что
arr.indexOf(x)
это не поддерживается в Internet Explorer до IE9 , поэтому, если вам нужно поддерживать IE8 и более ранние версии, это не будет работать, и функция jQuery является лучшей альтернативой.)источник
$.inArray
использовал в начале какой-то код, мне приходилось исправлять ошибку, я стону. Во всяком случае, это должен быть принятый ответ.Или, если вы хотите получить немного фантазии, вы можете использовать побитовые операторы not (~) и логические not (!) Для преобразования результата функции inArray в логическое значение.
источник
Я обычно использую
или
источник
if( $.inArray("test", myarray) > -1 )
Метод jQuery inArray () используется для поиска значения в массиве и возврата его индекса, а не логического значения. И если значение не было найдено, оно вернет -1.
Таким образом, чтобы проверить, присутствует ли значение в массиве, выполните следующую практику:
Ссылка
источник
inArray
Функция возвращает индекс объекта , подаваемый в качестве первого аргумента функции в массиве , подаваемый в качестве второго аргумента функции.Когда
inArray
возвращается,0
это означает, что первый аргумент был найден в первой позиции предоставленного массива.Для использования
inArray
в операторе if используйте:inArray
возвращает,-1
когда первый аргумент, переданный функции, не найден в массиве, переданном в качестве второго аргумента.источник
вместо использования
jQuery.inArray()
вы также можете использоватьincludes
метод для массива int:проверьте официальный пост здесь
источник
jQuery.inArray () возвращает индекс элемента в массиве или -1, если элемент не был найден. Узнайте больше здесь: jQuery.inArray ()
источник
Он вернет индекс элемента в массиве. Если он не найден, вы получите
-1
источник
Если мы хотим проверить, что элемент находится внутри набора элементов, мы можем сделать, например:
источник
Это полезно для проверки динамических переменных. Этот метод легко читается.
источник
$.inArray()
выполняет ТОЧНУЮ ЖЕ ВЕЩЬ какmyarray.indexOf()
и возвращает индекс элемента, для которого проверяется массив, на наличие. Это просто совместимо с более ранними версиями IE до IE9. Наилучшим выбором, вероятно, является использование,myarray.includes()
которое возвращает логическое значение true / false. Смотрите фрагмент кода ниже для примеров вывода всех 3 методов.источник
$.inArray
должен быть золотой стандарт, если у вас есть доступ к библиотеке jQuery. В противном случае.indexOf
вместо этого следует использовать JavaScript с полифилом для IE8. Держитесь подальше от таких современных вещей, как.includes()
.Чувак, проверь док .
например:
источник
По какой-то причине, когда вы пытаетесь проверить DOM-элемент jquery, он не будет работать должным образом. Таким образом, переписав функцию, добьемся цели:
источник
источник
Просто никто не использует
$
вместоjQuery
:источник
$
вместоjQuery
.самый короткий и простой способ.
источник