Solo una advertencia: soy nuevo en javascript. Por alguna razón, no se devuelve nada cuando llamo a impureSwipeRight() dentro de moveRight(). Sé que el código real funciona, ya que cuando todos son parte de la misma función, el código hace exactamente lo que quiero que haga. Entonces, ¿supongo que hay un problema con realmente llamar a la función?
function impureSwipeRight(i){ let totalOne = squares[i].innerHTML; let totalTwo = squares[i+1].innerHTML; let totalThree = squares[i+2].innerHTML; let totalFour = squares[i+3].innerHTML; //the above stores the inner value of each square //on that row, starting from the left let row = [parseInt(totalOne), parseInt(totalTwo), parseInt(totalThree), parseInt(totalFour)] //create an array storing the entire row let filterRow = row.filter(num => num) //filter out numbers from rows and store the numbers //as a new array. let missing = 4 - filterRow.length //checking how many 0s there are now in the row let zeros = Array(missing).fill(0) //creating a new array filled with these 0s let newRow = zeros.concat(filterRow) return newRow } //swiping right function moveRight(){ for(let i=0; i <16; i++){ //loops over all of grid if(i%4 === 0){ //define rows using modulus. If i MOD 4 = 0, //this means that the square is the start of each row. newRow = impureSwipeRight(i) squares[i].innerHTML = newRow[0] squares[i+1].innerHTML = newRow[1] squares[i+2].innerHTML = newRow[2] squares[i+3].innerHTML = newRow[3] //replaces each value with the new array } } } moveRight()