使用函数返回作为条件语句的内容
我想使用特定函数的返回值作为if语句的条件。那可能吗 ?使用函数返回作为条件语句的内容
我基本上建立一个函数内的一个字符串,该函数接受一个数组(conditionArray)并将它连接到一个语句。 然后它以字符串的形式返回这个条件。 之后,我想用这个字符串作为我的if语句的条件。
我目前的问题看起来像这样。
var answer = prompt("Tell me the name of a typical domestic animal");
var conditionArray = new Array("Dog", "Turtle", "Cat", "Mouse")
function getCondition(conditionArray) {
for (i = 0; i < conditionArray.length; i++) {
if (i != conditionArray.length) {
condition += 'answer === ' + conditionArray[i] + ' || ';
} else {
condition += 'answer === ' + conditionArray[i];
}
return condition;
}
}
if (getCondition(conditionArray)) {
alert("That is correct !");
} else {
alert("That is not a domestic animal !");
}
对于这种类型的测试使用Array.prototype.indexOf
的,x = arr.indexOf(item)
-
x === -1
装置item
不在arr
- 否则
x
是arr
索引中的第一次出现item
位于
var options = ["Dog", "Turtle", "Cat", "Mouse"],
answer = prompt("Tell me the name of a typical domestic animal");
// some transformation of `answer` here, i.e. casing etc
if (options.indexOf(answer) !== -1) {
alert("That is correct !");
} else {
alert("That is not a domestic animal !");
}
感谢您的帮助。它应该解决我目前的问题。但对于未来和更多问题。如上所述,是否有机会在条件语句中写入字符串? – theCodingPeanut
做这种测试的最好方法是使用Array.prototype.indexOf
。有关如何使用它的更多细节,请参阅Paul的答案。
-
如果你真的真的想返回的条件,你可以使用eval()
评估条件的字符串。请记住,eval()
是危险的,但。这是使用不建议。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Don%27t_use_eval_needlessly!
if (eval(getCondition(conditionArray))) {
alert("That is correct !");
} else {
alert("That is not a domestic animal !");
}
感谢您的详细解释,这就是我正在寻找。尽管如此,你是对的,它对于生产来说太危险了:/ – theCodingPeanut
要清楚,除非你自己编写解析器,否则没有其他方法可以评估条件字符串。你可以做的一件事是在将字符串传递给eval函数之前进行消毒。 –
一件事是你'if'声明您使用的是赋值运算符(=)而不是等号(==)。 –