在jquery中将值与JSON数组值匹配

时间:2010-05-14 14:04:54

标签: jquery json

我有一个看起来像这样的JSON数组:

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

我也有文字输入。我想测试'blur'上的输入值是否也在数组中,以及它是否有效。

知道了一点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!')
  }
});

那么,菜鸟是怎么回事?

4 个答案:

答案 0 :(得分:6)

in运算符检查字典(对象)中是否存在键。但它确实适用于数组。正确的方法是使用jQuery.inArray

if ($.inArray(user_animal, existing) > -1) {
    alert('Animal already exists!')
}

答案 1 :(得分:4)

in用于检查对象是否包含该属性,其中 - 您正在使用数组。

如果您想使用in,可以执行以下操作:

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

等,然后使用in一切都会好的,但是,最好继续使用你的数组,然后简单地循环它。

$('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第5版为数组引入了indexOf方法,因此它应该像操作一样简单:

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

然而,IE不支持这一点; you can implement it yourself though.

答案 2 :(得分:0)

如果你想在JS中使用“in”关键字,这可能会有所帮助: Reduce multiple ORs in IF statement in Javascript

答案 3 :(得分:0)

我相信您可以在this article找到答案。

由于JSON求值为数组,因此您应该查看indexOf函数。不知道你为什么在这里提到python ..