Mac*_*cha 1 javascript arrays loops
我有几个循环细胞周围细胞的功能.网格包含在数组中.
在我的代码中,我检查以确保它不是边缘单元之一,因为检查未定义的单元格会导致错误.
因此,我有这样的代码:
if(x > 0) {
var firstX = x - 1;
} else {
var firstX = x;
}
if(x < 199) {
var lastX = x + 1;
} else {
var lastX = x;
}
if(y > 0) {
var firstY = y - 1;
} else {
var firstY = y;
}
if(y < 199) {
var lastY = y + 1;
} else {
var lastY = y;
}
Run Code Online (Sandbox Code Playgroud)
很多代码行做的很少.有没有更优雅的方式来做到这一点?
fma*_*ark 11
或者更清楚:
var firstX = Math.max(x - 1, 0);
var lastX = Math.min(x + 1, 199);
var firstY = Math.max(y - 1, 0);
var lastY = Math.min(y + 1, 199);
Run Code Online (Sandbox Code Playgroud)
您可以使用条件运算符:
var firstX = x > 0 ? x - 1 : x;
var lastX = x < 199 ? x + 1 : x;
var firstY = y > 0 ? y - 1 : y;
var lastY = y < 199 ? y + 1 : y;
Run Code Online (Sandbox Code Playgroud)
你可以通过写一个函数去除冗余来计算给定值的"第一",以及类似的"最后" - 但我认为在这种情况下这将是过度的.