В принципе, вот фиктивная версия кода, который я использую, и я объясню, что происходит:
var types = ['type1', 'type2', 'type3', 'type4', 'type5'],
type = 'type1';
if ($.inArray(type, types)) {
alert('In Array');
} else {
alert('Not In Array');
}
Это связано с тем, что он не находится в массиве, тогда как если я изменил значение type
на "type2" или какое-либо другое значение, которое в массиве будет указано в массиве. Теперь, если я добавляю пустое значение в начале массива, как это:
var types = ['', 'type1', 'type2', 'type3', 'type4', 'type5']
Поместите значение type
обратно в 'type1', теперь он говорит мне об этом в массиве. Я, вероятно, пропустил что-то очевидное, я не уверен. Но я немного смущен, почему он не согласен с тем, что он первый в массиве, когда первое значение массива является фактическим значением? Если бы кто-нибудь мог пролить свет на это, это было бы оценено!
Вы должны фактически проверить -1
при использовании $.inArray, иначе первый индекс вернет 0
, что является ложным
if ($.inArray(type, types) != -1) {
alert('In Array');
} else {
alert('Not In Array');
}
Метод $.inArray() похож на собственный.indexOf() метод JavaScript, в котором он возвращает -1, когда он не находит совпадения. Если первый элемент внутри массива соответствует значению, $.inArray() возвращает 0.
$.inArray
именем$.inArray
возвращает индекс, а не логическое значение. Индекс0
является ложным.