Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript优化if语句_Javascript - Fatal编程技术网

Javascript优化if语句

Javascript优化if语句,javascript,Javascript,有没有办法压缩这个if语句 var alive1 = true if (x2 >= (x10 - 10) && x2 <= (x10 + 10) && y2 >= (y10 - 10) && y2 <= (y10 + 10) || x3 >= (x10 - 10) && x3 <= (x10 + 10) && y3 >= (y10 - 10) && y3

有没有办法压缩这个
if
语句

var alive1 = true   
if (x2 >= (x10 - 10) && x2 <= (x10 + 10) && y2 >= (y10 - 10) && y2 <= (y10 + 10) || x3 >= (x10 - 10) && x3 <= (x10 + 10) && y3 >= (y10 - 10) && y3 <= (y10 + 10) || x4 >= (x10 - 10) && x4 <= (x10 + 10) && y4 >= (y10 - 10) && y4 <= (y10 + 10) || x5 >= (x10 - 10) && x5 <= (x10 + 10) && y5 >= (y10 - 10) && y5 <= (y10 + 10)|| x6 >= (x10 - 10) && x6 <= (x10 + 10) && y6 >= (y10 - 10) && y6 <= (y10 + 10)) {
    alive1 = false;
}
var alive1=true

如果(x2>=(x10-10)和&x2=(y10-10)和&y2=(x10-10)和&x3=(y10-10)和&y3=(x10-10)和&x4=(y10-10)和&y4=(x10-10)和&x5=(y10-10)和&y5=(x10-10)和&x6=(y10-10)&&y6由于您只需检查
x2
是否在
x10
的10范围内,
y2
是否在
y10
的10范围内,依此类推,您可以将其更改为:

if (Math.abs(x2 - x10) <= 10 && Math.abs(y2 - y10) <= 10 && ...) {
    alive1 = false;
}
if(Math.abs(x2-x10)您不能真正“压缩”代码,但可以使其更具可读性

您正在根据相同的条件检查成对的数字,因此成对数组可能是最好的方法

通过在
for
循环之外计算
x10-10
etc,还可以进一步提高性能和可读性

var alive1 = true;

var minX = x10 - 10;
var maxX = x10 + 10;
var minY = y10 - 10;
var maxY = y10 - 10;

var coords = [[x2,y2], [x3,y3], [x4,y4], [x5,y5], [x6,y6]];

// loop each [x,y] pair
for(var i = 0; i < coords.length; i++) {
    var x = coords[i][0];
    var y = coords[i][1];
    if(x >= minX && x <= maxX && y >= minY && y <= maxY) {
        alive1 = false;
        // found a false condition, no need to continue the loop
        break;
    }
}
var alive1=true;
var minX=x10-10;
var maxX=x10+10;
var minY=y10-10;
var maxY=y10-10;
var coords=[[x2,y2],[x3,y3],[x4,y4],[x5,y5],[x6,y6];
//循环每个[x,y]对
对于(变量i=0;i如果(x>=minX&&x=minY&&y)有这么多的条件,那么你做了一些错误的事情,否则就使用数组。在任何情况下,你都可以使用。只是一个观察,我知道你所说的“压缩”是什么意思,但在这个上下文中,这会让其他人感到困惑。我想你应该说“清理”或“优化”.只需将您正在与x10和y10进行比较的值组成一个数组,并映射到该值上,变量有什么格式?您到底想做什么?