📜  如何在javascript中旋转数组(1)

📅  最后修改于: 2023-12-03 15:24:31.555000             🧑  作者: Mango

如何在 JavaScript 中旋转数组

在某些场景下,我们需要将数组的元素进行旋转,例如:将数组 [1, 2, 3, 4, 5] 向右旋转 2 个元素位置后,得到的新数组为 [4, 5, 1, 2, 3]。

那么在 JavaScript 中该如何实现数组旋转呢?下面我们来详细介绍几种方法。

方法一:使用数组的 slice 方法

我们可以通过数组的 slice 方法来实现数组的旋转,具体步骤如下:

  1. 将原数组最后的 k 个元素使用 slice 方法截取出来,得到一个新数组;
  2. 将原数组中除了最后 k 个元素的其他元素使用 slice 方法截取出来,也得到一个新数组;
  3. 将两个新数组拼接在一起,得到的新数组即为旋转后的数组。

下面是具体实现的代码片段:

function rotateArray(arr, k) {
  let len = arr.length;
  k = k % len;
  return arr.slice(len - k).concat(arr.slice(0, len - k));
}
方法二:使用数组的 splice 和 push 方法

我们还可以通过数组的 splice 和 push 方法来实现数组的旋转,具体步骤如下:

  1. 将原数组最后的 k 个元素使用 splice 方法截取出来,得到一个新数组;
  2. 将新数组逆序遍历,并通过 push 方法将元素添加到原数组的最前面;
  3. 最终得到的数组即为旋转后的数组。

下面是具体实现的代码片段:

function rotateArray(arr, k) {
  let len = arr.length;
  k = k % len;
  let cutArr = arr.splice(len - k, k);
  for (let i = cutArr.length - 1; i >= 0; i--) {
    arr.unshift(cutArr[i]);
  }
  return arr;
}
方法三:使用数组的 unshift 和 pop 方法

我们还可以通过数组的 unshift 和 pop 方法来实现数组的旋转,具体步骤如下:

  1. 将原数组最后的 k 个元素使用 pop 方法逐个弹出,并通过 unshift 方法将元素添加到原数组的最前面;
  2. 重复上述步骤 k 次,即可得到旋转后的数组。

下面是具体实现的代码片段:

function rotateArray(arr, k) {
  let len = arr.length;
  k = k % len;
  for (let i = 1; i <= k; i++) {
    let temp = arr.pop();
    arr.unshift(temp);
  }
  return arr;
}

以上就是在 JavaScript 中实现数组旋转的三种方法,大家可以根据自己的需求选择实现的方式。