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

TypeScript数组截取:保留指定数量元素的最优实现方案

TypeScript 数组截断至指定长度的优质实现方式

以下是几种高效、类型安全的实现方案,根据你的使用场景选择即可:

1. 使用 slice(无副作用,优先推荐)

slice 是数组原生方法,不会修改原数组,返回一个包含前N个元素的新数组。如果原数组长度小于等于目标长度,会直接返回原数组,鲁棒性强。

function truncateArray<T>(arr: T[], targetLength: number): T[] {
  return arr.slice(0, targetLength);
}

// 调用示例
const originalArr = new Array(62).fill('element');
const truncatedArr = truncateArray(originalArr, 60);
console.log(truncatedArr.length); // 输出 60

适用场景:需要保留原数组、希望避免副作用的场景,这是最通用的方案。

2. 使用 splice(原地修改)

splice 会直接修改原数组,从指定索引开始删除后续所有元素。适合不需要保留原数组、希望节省内存的场景。

function truncateArrayInPlace<T>(arr: T[], targetLength: number): void {
  if (arr.length > targetLength) {
    arr.splice(targetLength);
  }
}

// 调用示例
const originalArr = new Array(62).fill('element');
truncateArrayInPlace(originalArr, 60);
console.log(originalArr.length); // 输出 60

注意:splice 会改变原数组,调用前确认不需要保留原数组的原始状态。

3. 直接修改数组 length 属性(极简原地修改)

数组的 length 属性是可写的,直接将其设置为目标长度会自动截断超出部分的元素,代码最简洁。

function truncateArrayByLength<T>(arr: T[], targetLength: number): void {
  if (arr.length > targetLength) {
    arr.length = targetLength;
  }
}

// 调用示例
const originalArr = new Array(62).fill('element');
truncateArrayByLength(originalArr, 60);
console.log(originalArr.length); // 输出 60

适用场景:追求代码简洁、允许修改原数组的场景,性能最优。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:55:14