Соответствие значению к JSON выстраивает значения в jQuery

У меня есть массив JSON, который похож на это:

['Monkey','Cheetah','Elephant','Lizard','Spider']

У меня также есть ввод текста. Я хочу протестировать, является ли значение входа на 'размытость' также в массиве и если это, делают что-то.

При знании небольшого количества Python я попробовал что-то вроде этого:

var existing_animals = ['Monkey','Cheetah','Elephant','Lizard','Spider']
$('input').blur(function() {
  user_animal = $(this).val()
  if (user_animal in existing_animals) {
    alert('Animal already exists!')
  }
});

Так, как новобранец является моей ошибкой?

7
задан chrism 14 May 2010 в 14:10
поделиться

4 ответа

Оператор in проверяет, присутствует ли ключ в словаре (объекте). Однако он не работает для массивов. Правильный подход заключается в использовании jQuery.inArray:

if ($.inArray(user_animal, existing) > -1) {
    alert('Animal already exists!')
}
6
ответ дан 7 December 2019 в 01:17
поделиться

Я думаю, вы можете найти свой ответ в этой статье .

Поскольку JSON вычисляет массив, вы должны смотреть на функцию indexOf . Не знаю, почему вы упомянули здесь python ..

0
ответ дан 7 December 2019 в 01:17
поделиться

в предназначен для проверки, включает ли объект атрибут, в то время как вы используете массив.

Если вы хотите использовать свой в , вы можете:

var existing_animals = {
  "Monkey":1,
  "Cheetah":1
};

и т. Д., Тогда все будет хорошо, используя в , однако было бы лучше продолжать использовать свой Array и просто переберите его.

$('input').blur(function() {
  user_animal = $(this).val()

  for (var i=0;i<existing_animals.length;i++) {
     if (existing_animals[i] == user_animal) {
        alert("Animal exists");

        break;
     };
  };
});

Пятое издание ECMA представляет метод indexOf для массивов, поэтому это должно быть так же просто, как и сделать:

if (existing_animals.indexOf(user_animal) != -1) {
   alert("Animal exists");
};

Однако IE не поддерживает это; Вы можете реализовать это самостоятельно.

4
ответ дан 7 December 2019 в 01:17
поделиться

Если вы хотите использовать ключевое слово "in" в JS, это может быть полезно: Сокращение множественных OR в операторе IF в Javascript

0
ответ дан 7 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

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