Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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,变量=[ { 尼克:Bob1, x:12, y:21 }, { 尼克:Bob2, x:20, y:21 }, { 尼克:Bob3, x:12, y:21 } ] 变量me={ x:19, y:20 } 对于敌人中的var x{ var敌人=敌人[x]; 如果Math.absme.x-friend.x找到匹配元素,则可以使用Arrayfind提前从循环返回 变量=[{ 尼克:Bob1, x:12, y:21 }, { 尼克:Bob2, x:20, y:21 }, { 尼克:Bob3, x:12,

变量=[ { 尼克:Bob1, x:12, y:21 }, { 尼克:Bob2, x:20, y:21 }, { 尼克:Bob3, x:12, y:21 } ] 变量me={ x:19, y:20 } 对于敌人中的var x{ var敌人=敌人[x]; 如果Math.absme.x-friend.x找到匹配元素,则可以使用Arrayfind提前从循环返回

变量=[{ 尼克:Bob1, x:12, y:21 }, { 尼克:Bob2, x:20, y:21 }, { 尼克:Bob3, x:12, y:21 } ] 变量me={ x:19, y:20 } var敌军=敌军。findenemy=>Math.absme.x-敌军.x有一个布尔值,如found,它以false开头。当找到它时,将其设置为true并中断。然后在循环完成if found…else…之后,将打印移出循环,确保只获得一次

此外,您可以使用新方法对其进行大量压缩,该方法在内部基本上可以更快地完成相同的任务:

let found = enemies.some(enemy => enemyIsClose(enemy, me));

如果您确实需要查找哪一个敌人在附近,find(而不是some)将返回第一个敌人,filter(过滤器)将返回所有敌人。

为了让您的代码检查敌人是否在附近,它需要遍历敌人的所有位置,这是无法避免的,但是如果您只想减少控制台日志的数量,您可以使用此代码:

var isEnemyFound = true;
for (let x of enemies) {
   var enemy = enemies[x];
   if ((Math.abs(me.x - enemy.x) <= 1 && Math.abs(me.y - enemy.y) <= 1)) { 
      console.log("Enemy In range");
      break;
   } else {
      isEnemyFound = false;
   }
}

if(!isEnemyFound){
console.log("Enemies not in range");
}

您只需使用Array.filter筛选对象并查找集合

变量=[ { 尼克:Bob1, x:12, y:21 }, { 尼克:Bob2, x:20, y:21 }, { 尼克:Bob3, x:12, y:21 } ] 变量me={ x:19, y:20 } var敌人=敌人。filteritem=>{
return me.x-item.x总的来说,这是一个更好的解决方案。上一个是我在飞行中做的。 试着玩一下,看看这是否是你需要的。我真的希望是:

如果你把你的me值改为'13',结果仍然是一样的,但是试着把它改为'14',比如,看看逻辑是如何运作的。这是一种过分的做法,但是如果你想提高你的游戏水平,这是一个很好的解决方案,因为你可以随时创造你想要的变化和可能性,只需调用next;in o为了创造下一个价值。只是一个建议。祝你好运

让敌人=[ {nick:Bob1,x:12,y:21}, {nick:Bob2,x:12,y:21}, {nick:Bob3,x:12,y:21} ]; 让我={ x:12, y:21 } 功能*范围{ 让x进入敌人{ 让敌人=敌人[x]; whileMath.absme.x-敌军.x.filter…[0]将给出与.find…(查找…)相同的结果,只是速度较慢。