用js实现一个函数 rotateArray(arr, n),接收一个数组 arr 和一个整数 n作为参数,将数组向右循环移动 n 个位置。例如,rotateArray([1, 2, 3, 4, 5], 2) 应该返回[4, 5, 1, 2, 3] 如何实现
时间: 2023-07-02 11:12:54 浏览: 95
好的,我可以使用 JavaScript 实现这个函数,示例代码如下:
```
function rotateArray(arr, n) {
const len = arr.length;
// 如果 n 大于数组长度,取模处理
n = n % len;
// 如果 n 等于 0,直接返回原数组
if (n === 0) {
return arr;
}
// 将数组的后 n 个元素放到前面,前面的元素往后移动 n 个位置
for (let i = 0; i < n; i++) {
arr.unshift(arr.pop());
}
return arr;
}
```
这个函数首先将 n 对数组长度取模,以保证 n 不大于数组长度。然后判断 n 是否等于 0,如果等于 0,直接返回原数组。否则,将数组的后 n 个元素放到前面,前面的元素往后移动 n 个位置,这里可以使用 `unshift` 和 `pop` 方法实现。最后返回移动后的数组。
相关问题
用js实现一个函数 rotateArray(arr, n),接收一个数组 arr 和一个整数 n 作为参数,将数组向右循环移动 n 个位置。例如,rotateArray([1, 2, 3, 4, 5], 2) 应该返回 [4, 5, 1, 2, 3]
好的,我来给你实现一个 rotateArray 函数:
```javascript
function rotateArray(arr, n) {
// 将 n 对数组长度取模,避免重复旋转
n = n % arr.length;
// 将后 n 个元素存储到新数组中
const temp = arr.slice(arr.length - n);
// 将原数组前面的元素移动到后面
for (let i = arr.length - 1; i >= n; i--) {
arr[i] = arr[i - n];
}
// 将新数组中存储的元素移动到原数组前面
for (let i = 0; i < n; i++) {
arr[i] = temp[i];
}
return arr;
}
// 测试
console.log(rotateArray([1, 2, 3, 4, 5], 2)); // [4, 5, 1, 2, 3]
```
我先将 n 对数组长度取模,避免重复旋转。然后将后 n 个元素存储到新数组中,将原数组前面的元素移动到后面,最后将新数组中存储的元素移动到原数组前面。最后返回原数组即可。
用is实现一个函数 rotateArray(arr, n),接收个数组 arr 和一个整数 n作为参数,将数组向右循环移动 n 个位置。例如,rotateArray([12, 3, 4, 5], 2) 应该返回 [4, 5, 1, 2, 3]
好的,我可以用 is 实现这个函数,示例代码如下:
```
function rotateArray(arr, n) {
n = n % arr.length;
return arr.slice(-n).concat(arr.slice(0, -n));
}
```
这个函数首先将 n 对数组长度取模,以保证 n 不大于数组长度。然后使用数组的 slice 方法将数组分成两部分,分别是后面的 n 个元素和前面的 n 个元素,然后再将它们连接起来。这样就实现了将数组向右循环移动 n 个位置的功能。
阅读全文