我有一个看起来像这样的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!')
}
});
那么,菜鸟是怎么回事?
答案 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 ..