我有一个多重选择,我做了一个函数来检查几个参数,每个参数以另一种形式打印不同的值:
if ( (tot_v >= 10) || (perc_a < 100) ) {
$("#DA_IDO").val('1');
}
if ( (tot_v > 3) && (tot_v < 10) && (perc_a == 100) ) {
$("#DA_IDO").val('2');
}
if ( (tot_v <= 3) && (perc_a == 100) ) {
$("#DA_IDO").val('3');
}
然后我们来指责:
if ( !( array in {'One':'', 'Two':'','Three':'','Four':'','Five':''}) ) {
$("#DA_IDO").val('5');
}
这样可行,但在我看来,如果array =(One,Ten),if应该不起作用,因为数组中的至少一个项目就在那里,而不是像if被触发的数组。
我做错了什么?在谷歌搜索“javascript in”是如此困难.-)
由于
答案 0 :(得分:2)
我认为你误解了“in”声明。 “in”,在javascript中,检查指定的值是否作为属性(或数组中的索引)存在。例如:
var x = { a: 'b', c: 'd' };
if('a' in x){
//true
}
if('b' in x){
//false
}
您要做的是确定数组中的任何值是否包含在对象中。为此,你必须使用一个循环,如下所示:
var possible = {'One':'', 'Two':'','Three':'','Four':'','Five':''};
//removed "array" as a variable name, since it's a bit confusing
for(var i = 0; i < values.length; i++){
if(values[i] in possible){
//exists
}
}
有关详细信息,请查看Mozilla文档: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/in_Operator
答案 1 :(得分:1)
以下是有关in
运算符的详细信息的来源:
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/in_Operator
答案 2 :(得分:1)
答案 3 :(得分:-1)
这是正常行为,您的变量“array
”是一个数组(当您将其设置为('One','Ten')
时),因此它不是int {'One':'', 'Two':'','Three':'','Four':'','Five':''}
(但是“One”)。
if
阻止的原因有效,因为您正在检查NOT IN('!
')。
我希望我在这里没有错过任何内容。