You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript将数组的倒数第二个元素移至首位?

实现将数组倒数第二个元素移至首位的方案

没问题,我来帮你搞定这个需求!咱们要实现的是:不管数组长度动态变化成多少,都能把倒数第二个元素移到数组最前面。如果数组长度小于2(比如只有1个元素或者空数组),这个操作其实没有意义,直接保持原数组即可。

方法一:原地修改原数组

这种方法会直接改动原数组,适合需要在原数组上操作的场景,用Array.splice()和Array.unshift()组合实现:

// 示例数组,长度可以是任意>=2的值
let unit_value = [1, 12, 100, 200];

// 先判断数组长度是否足够,避免报错
if (unit_value.length >= 2) {
  // 从倒数第二个位置删除1个元素,拿到这个元素
  const secondLastElement = unit_value.splice(-2, 1)[0];
  // 把这个元素添加到数组开头
  unit_value.unshift(secondLastElement);
}

console.log(unit_value); // 输出: [100, 1, 12, 200]

代码说明:

  • splice(-2, 1):splice的第一个参数为负数时,代表从数组末尾开始计数,-2就是倒数第二个位置;第二个参数1表示删除1个元素。这个方法会返回被删除元素组成的数组,所以我们取[0]拿到单个元素。
  • unshift(secondLastElement):把拿到的倒数第二个元素插入到数组最开头。
  • 加入length >=2的判断:如果数组长度不足2,直接跳过操作,防止出现索引错误。

方法二:返回新数组(不修改原数组)

如果你不想改动原数组,而是希望得到一个全新的数组,可以用数组解构和slice()来实现:

let unit_value = [1, 12, 100];
let newArr = [...unit_value]; // 先复制原数组(可选,避免修改原数组)

if (newArr.length >= 2) {
  const secondLast = newArr[newArr.length - 2];
  // 拼接新数组:倒数第二个元素 + 前面除了倒数第二个的部分 + 最后一个元素
  newArr = [secondLast, ...newArr.slice(0, newArr.length - 2), newArr[newArr.length - 1]];
}

console.log(newArr); // 输出: [12, 1, 100]

代码说明:

  • newArr.length - 2:直接通过索引拿到倒数第二个元素。
  • slice(0, newArr.length - 2):截取数组从开头到倒数第三个元素的部分(也就是除了倒数第二和最后一个元素的前面所有内容)。
  • 用展开运算符...把各个部分拼接成新数组,原数组不会被修改。

不同长度数组的测试情况

  • 当数组长度为2时:比如[5,6],执行后数组还是[5,6](因为倒数第二个元素就是第一个元素,移到首位等于没变化)。
  • 当数组长度为1或空数组:直接返回原数组,不会报错。

内容的提问来源于stack exchange,提问作者shah rushabh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:38:08