if
声明:
//var current is array of arrays of integers
if((current[rot][0] + x)<blocks.length
&& (current[rot][1] + x)<blocks.length
&& (current[rot][2] + x)<blocks.length
&& (current[rot][3] + x)<blocks.length
&& !$(blocks[current[rot][0]+x]).hasClass("blockLand")
&& !$(blocks[current[rot][1]+x]).hasClass("blockLand")
&& !$(blocks[current[rot][2]+x]).hasClass("blockLand")
&& !$(blocks[current[rot][3]+x]).hasClass("blockLand"))
{
//something to happen here ONCE!
}
因为我想在内部发生一些事情,我认为我无法使用for loop
。
所以我的问题是:是否有可能减少条件数量的方法?怎么样?
PS:是的,我发现我可以在flag
内使用true/false
(if
)并在if
之外的另一个xmlDoc.PreserveWhitespace = false;
中执行我的工作 - 但我认为并不总是能够奏效,因为对于每一个循环,旗帜都会不同。
答案 0 :(得分:4)
var b = true;
for (var i = 0; i <= 3; i++) {
// In two lines for being clear, but it's possible just in one
b = b && (current[rot][i] + x)<blocks.length
b = b && !$(blocks[current[rot][i]+x]).hasClass("blockLand");
// You could speed it up this way.
if(!b) break;
}
if (b) {
//something to happen here ONCE!
}
答案 1 :(得分:1)
我想我明白你在问什么但请告诉我是否还有其他事情可以做。
JavaScript有一个三元(条件运算符)https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator
此运算符允许您根据内部if / else条件指定true / false值。
以下是一些代码供您解释...
window.onload = function() {
var one = 1;
var two = 2;
console.log(one > two ? "greater" : "not greater");
};
您还可以使用Switch语句,您可以在此处阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch。
以下是switch语句的示例。
window.onload = function() {
var string = "testing this out";
switch (string) {
case "testing this out":
console.log('testing this out found in condition one');
break;
case "testing":
console.log('found testing');
break;
default:
console.log('not found');
break;
}
};
如果我可以改进,请告诉我。