【发布时间】:2019-04-04 00:12:20
【问题描述】:
我有一个嵌套的 if 语句树,它运行一个函数 16 次(我知道),每次都向函数发送一组不同的元素。
函数只返回真或假。
if(!checkSpecial(1,1,1,1)) {
if(!checkSpecial(1,1,1,0)) {
if(!checkSpecial(1,1,0,1)) {
if(!checkSpecial(1,0,1,1)) {
if(!checkSpecial(0,1,1,1)) {
if(!checkSpecial(1,1,0,0)) {
if(!checkSpecial(1,0,0,1)) {
if(!checkSpecial(0,0,1,1)) {
if(!checkSpecial(1,0,1,0)) {
if(!checkSpecial(0,1,0,1)) {
if(!checkSpecial(0,1,1,0)) {
if(!checkSpecial(1,0,0,0)) {
if(!checkSpecial(0,1,0,0)) {
if(!checkSpecial(0,0,1,0)) {
if(!checkSpecial(0,0,0,1)) {
if(!checkSpecial(0,0,0,0)) {
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
} else {
// do other stuff
}
如你所见,如果函数在每一个实例中都返回 false,我想做其他事情。
如果函数返回 true,我不想做任何事情。
我的问题是,我知道必须有更好的方法来做到这一点,我假设通过某种循环,但我不知道这种类型的循环会被称为什么或它是如何工作的.
到目前为止我的修复:
for (var i = 0; i < 16; i++) {
// HELP!
}
任何指针将不胜感激。谢谢。
【问题讨论】:
-
1.将
i转换为4 位,以1 和0 的形式存储在数组中。 2. 使用Function.prototype.apply -
如果不了解函数的作用,很难提供建议。
-
我不明白知道函数的作用有多重要。它请求 1 或 0 的 4 个输入,然后给出真或假答案。不管怎样,这个函数除了总是返回 false 之外什么都做不了……关键是如何简化 if 语句。
-
正如@Pointy 所说,在不知道函数实现了什么的情况下,很难提供任何可靠的东西。我能提供的唯一建议是将每个排列存储在一个数组中并对其进行迭代,而不是编写每个 if 语句。
-
一个调用返回真后你能中止吗?
标签: javascript loops if-statement