Javascript 拼接功能无法正常工作

Javascript splice function not working correctly

这里是相对较新的程序员。我有一个用 Javascript 编写的功能齐全的俄罗斯方块游戏。我在使用最终功能时遇到问题 - 拼接在删除填充颜色的行时未按预期工作。我确定我循环遍历数组的方式可能有问题,但我无法解决,如果有人可以提供一些建议,我正在徘徊。这是我当前的函数,每次形状与另一个形状碰撞时都会调用该函数:

  for(let y = arena.length-1; y < 0; y--){
    for(let x = 0; x < arena[y].length; x++){
      if (arena[y][x] === 0) {
        continue;
      } 
    }
    const row = arena.splice(y,1)[0].fill(0);
    arena.unshift(row);
    y++;
  };
}

已为您修复。你有几个概念是错误的:

function arenaSweep() {
  for(let y = arena.length-1; y >= 0; y--){
    const row = arena[y];
    let filled = true;
    
    for(let x = 0; x < row.length; x++){
      if (row[x] === 0) {
        filled = false;
        break;
      } 
    }
    
    if (filled) {
      arena.splice(y,1);
      row.fill(0);
      arena.unshift(row);
      y++;
    }
  };
}

您的 for 循环中的条件对于反向循环有错​​误的方向(y < 0 应该是 y >= 0)。

接下来您假设 continue 会跳出内部循环,这样您就可以开始检查下一行;但是,中断会停止当前循环。继续只是让你移动到嵌套循环的下一个迭代。

我还通过减少数组调用进行了一些优化。