더북(TheBook)
  console.log(newData);
  [1, 2, 3, 4].forEach((cellData, i) => {
    [1, 2, 3, 4].forEach((rowData, j) => {
      data[3 - j][i] = Math.abs(newData[i][j]) || 0;
    });
  });
  break;
}

네 방향으로 정렬하기와 숫자 합치기까지 모두 구현했습니다. i와 j 때문에 무척 헷갈렸을 겁니다. 생각만으로 구현하기 어렵다면 노트에 배열을 그리고 순서대로 숫자를 대입해 보는 것도 방법입니다.

마지막으로 moveCells() 함수의 끝부분에서 put2ToRandomCell() 함수를 호출합니다. 그러면 숫자를 정렬하고 합친 후 무작위 위치에 숫자 2 타일을 새로 생성합니다. draw() 함수보다는 위에 있어야 새로운 타일이 화면에 표시됩니다.

function moveCells(direction) {
  (중략)
  put2ToRandomCell(); // 무작위 위치에 새로운 숫자 2 넣기
  draw();
}