如何用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
相关产品推荐
相关产品推荐

