JavaScript:将数组向左旋转,然后向右旋转给定的旋转次数

JavaScript:将数组向左旋转,然后向右旋转给定的旋转次数,javascript,arrays,rotation,Javascript,Arrays,Rotation,我需要能够编写一个函数来旋转给定的数组,先向左旋转,然后向右旋转给定的旋转次数 到目前为止,我写的是: function rotateArray(arr, rotLeft, rotRight) { let len = arr.length; for(let i=0; i<rotLeft; i++){ let temp = arr[0]; for(let i=0; i< len; i++){ arr[i]=arr[i+1]; } arr

我需要能够编写一个函数来旋转给定的数组,先向左旋转,然后向右旋转给定的旋转次数

到目前为止,我写的是:

function rotateArray(arr, rotLeft, rotRight) {
let len = arr.length;
for(let i=0; i<rotLeft; i++){ 
    let temp = arr[0];
    for(let i=0; i< len; i++){
        arr[i]=arr[i+1];
    }
    arr[len-1]=temp;
}
return arr;

for(let i=0; i<rotRight; i++){ 
    let temp = arr[0];
    for(let i=0; i< len; i++){
        arr[i]=arr[i+1];
    }
    arr[len-1]=temp;
}
return arr;
}

let arr = [1,2,3,4,5];

let rotLeft = 3;
let rotRight = 4;
let output = rotateArray(arr, rotLeft, rotRight);
console.log("New Array:", output);
函数旋转阵列(arr、旋转左、旋转右){
设len=arr.长度;

对于(设i=0;i此代码应执行您想要的操作:

const rotate = (array, rotLeft, rotRight) => {
    const leftPass = [...array.slice(rotLeft), ...array.slice(0, rotLeft)];
    const rightPass = [...leftPass.slice(array.length - rotRight), ...leftPass.slice(0, array.length - rotRight)];
    return rightPass
}

// rotate([1,2,3,4,5], 3, 4) = [5, 1, 2, 3, 4]

rotateLeft
rotateRight
有单独的方法

在每次向左旋转时,取第一个元素,最后保持它(移动和推动) 在每次向右旋转时,取最后一个元素并将其保持在第一个位置(弹出和取消移动)

const rotateLeft=(arr,num)=>
Array.from({length:num}).forEach(()=>arr.push(arr.shift());
常量rotateRight=(arr,num)=>
Array.from({length:num}).forEach(()=>arr.unshift(arr.pop());
常量rotatarray=(arr、rotlight、rotlight)=>{
旋转左(arr,旋转左);
旋转右(arr,旋转右);
};
设arr=[1,2,3,4,5];
设rotlight=3;
让rotRight=4;
旋转耳道(arr、旋转左、旋转右);

console.log(arr);
您的代码有几处错误:

  • 代码中应该向右旋转的部分与向左旋转的部分相同
  • 要向右旋转阵列,必须从阵列的末端开始(而不是从左旋转的起点):

    这对你有用吗?还是也有用
    for(let i = 0; i < rotRight; i++) { 
        let temp = arr[len - 1];
        for(let i = len - 1; i > 0; i--) { // start from the last index, end at 0
            arr[i] = arr[i - 1];
        }
        arr[0] = temp;
    }