JavaScript Array и jQuery inArray, вызывающие проблемы с первыми значениями массива [duplicate]

0

В принципе, вот фиктивная версия кода, который я использую, и я объясню, что происходит:

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', теперь он говорит мне об этом в массиве. Я, вероятно, пропустил что-то очевидное, я не уверен. Но я немного смущен, почему он не согласен с тем, что он первый в массиве, когда первое значение массива является фактическим значением? Если бы кто-нибудь мог пролить свет на это, это было бы оценено!

  • 0
    Метод с $.inArray именем $.inArray возвращает индекс, а не логическое значение. Индекс 0 является ложным.
Теги:
arrays

2 ответа

3
Лучший ответ

Вы должны фактически проверить -1 при использовании $.inArray, иначе первый индекс вернет 0, что является ложным

if ($.inArray(type, types) != -1) {
    alert('In Array');
} else {
    alert('Not In Array');
}
  • 0
    Ах, я вижу, спасибо! Будет отмечен как лучший ответ, когда это позволяет мне!
1

Метод $.inArray() похож на собственный.indexOf() метод JavaScript, в котором он возвращает -1, когда он не находит совпадения. Если первый элемент внутри массива соответствует значению, $.inArray() возвращает 0.

https://api.jquery.com/jQuery.inArray/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню