Tengo una matriz como [1,2,3,4,5] y tengo el número total para rotar la matriz como 3 . Entonces, después de la primera rotación, la matriz debería ser [2,3,4,5,1] . De esta manera, la matriz debe seguir girando n número de veces que se da. Tengo una solución para rotar la matriz que se muestra a continuación, pero no puedo hacer esto n veces. Esto es lo que he hecho:
function rotateLeft(arr, n) { var newArr = []; for( let i=1; i< arr.length; i++){ newArr.push(arr[i]); } newArr.push(arr[0]); console.log(newArr); } rotateLeft([1,2,3,4,5], 3);Empuje el primer elemento de una matriz hasta el final dentro de un bucle while
const original = [1,2,3,4,5]; console.log(`original: [${ original}], rotated: [${ rotateLeft(original, 3)}]`); function rotateLeft(arr, n) { // if you want to mutate the original arr // omit cloning const clone = [...arr]; while (n--) { clone.push(clone.shift()); }; return clone; }Dado que no gira la matriz en su lugar, sino que crea una nueva matriz, puede hacerlo de manera más simple:
function rotateLeft(arr, n) { n %= arr.length; return [...arr.slice(n), ...arr.slice(0, n)]; } // generate an array with numbers const arr = [...Array(20).keys()]; console.log(...arr); // rotateLeft by 8 console.log(...rotateLeft(arr, 8)); // rotateLeft by -22 (rotateRight by 22) // since arr.length === 20 // same as rotateLeft by -2 // same as rotateLeft by 18 console.log(...rotateLeft(arr, -22));