TypeScript实现将数组最后一位元素移至首位的解决方案
TypeScript实现:将数组最后一个元素移至首位
这里有几种实用的实现方案,你可以根据自己的场景灵活选择:
方案1:直接修改原数组(可变方式)
如果不需要保留原数组的初始状态,用pop()和unshift()的组合是最直观的方式:
let column = ["generic complaint", "epidemic complaint", "epidemic1 complaint", "epidemic2 complaint", "bal vivah", "name"]; // 取出最后一个元素,同时从原数组中移除它 const lastElement = column.pop(); // 避免空数组场景下添加undefined,先判断元素是否存在 if (lastElement) { column.unshift(lastElement); } // 此时 column 即为目标数组:["name","generic complaint", "epidemic complaint", "epidemic1 complaint", "epidemic2 complaint", "bal vivah"]
优点:代码简洁易懂,操作直接,对于常规长度的数组性能完全够用(unshift的时间复杂度为O(n),但日常开发中几乎不会有性能瓶颈)。
方案2:创建新数组(不可变方式)
如果需要保留原数组不变,推荐用解构赋值的方式,更契合函数式编程的风格:
const originalColumn = ["generic complaint", "epidemic complaint", "epidemic1 complaint", "epidemic2 complaint", "bal vivah", "name"]; // 解构分离出最后一个元素和其余所有元素 const [...restElements, lastElement] = originalColumn; // 拼接生成新数组 const newColumn = [lastElement, ...restElements];
这种方式下originalColumn会保持初始状态不变,newColumn就是你需要的结果,TypeScript会自动推断数组类型,无需额外声明。
方案3:使用slice方法创建新数组
另一种不可变实现方式,通过slice()截取数组片段来组合新数组:
const originalColumn = ["generic complaint", "epidemic complaint", "epidemic1 complaint", "epidemic2 complaint", "bal vivah", "name"]; // 处理空数组边界情况,防止获取到undefined const newColumn = originalColumn.length ? [originalColumn[originalColumn.length - 1], ...originalColumn.slice(0, -1)] : [...originalColumn];
originalColumn.slice(0, -1)会返回原数组中除最后一个元素外的所有内容,再和最后一个元素拼接成目标数组。
内容的提问来源于stack exchange,提问作者vinuta
相关产品推荐
相关产品推荐

