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;
}