jQuery inArray всегда возвращается-1

Вам также может потребоваться переопределить UIViewController disablesAutomaticKeyboardDismissal, чтобы в некоторых случаях это работало. Это, возможно, должно быть сделано в UINavigationController, если он у вас есть.

19
задан PositiveGuy 1 July 2009 в 21:16
поделиться

5 ответов

Попробуйте вместо этого:

$.grep(allProductIDs, function(n) { return n == lastProductID; });

Предупреждение: grep возвращает массив.

Похоже, jQuery выполняет === вместо == с inArray .

9
ответ дан 30 November 2019 в 02:13
поделиться

Вот почему все ненавидят языки, которые не являются ТИПОВЫМИ. Я изначально установил значение lastProductIndex со значением, но это была строка (потому что я получил значение из объекта HttpResponse из возвращенного JSON. Поэтому, следовательно, я установил переменную в строку, потому что возвращенное значение JSON было строкой Когда я жестко закодировал число 6758 в $ .inArray, он работал нормально и привлек мое внимание.

6
ответ дан 30 November 2019 в 02:13
поделиться

Используете ли вы на своей странице какие-либо другие библиотеки JavaScript?

Если это так, то для сокращения $ может быть конфликт. Это может быть решено несколькими способами, одним из которых может быть упаковка кода в самоисполняющуюся анонимную функцию

(function($) {
    var lastProductIndex = $.inArray(lastProductID, allProductIDs);
})(jQuery);
0
ответ дан 30 November 2019 в 02:13
поделиться

Это меня тоже сначала смутило, у меня была такая же проблема. Кажется, что jQuery.inArray () требует строки. Так что вы можете просто сделать:

var lastProductID = "6758";

В моем случае я пытался сделать:

var foo = date.getTime () / 1000;

Что всегда приводило к - 1 возвращается из $ .inArray ()

Но вы можете просто преобразовать его в строку:

var foo = String (date.getTime () / 1000);

Надеюсь, что это кому-то поможет :)

-1
ответ дан 30 November 2019 в 02:13
поделиться

У меня вчера была такая же проблема ,,

var data=[2,4,6,8];
alert( $.inArray(4,data) ) // output 1 as expected
alert( $.inArray("4",data) ) // output -1 as expected 

Обычно это происходит, когда вы получаете значение для проверки из элемента ввода или чего-то, что возвращает строку. Вам нужно выполнить parseInt (string, radix) , чтобы преобразовать его в число ...

44
ответ дан 30 November 2019 в 02:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: