新闻中心

从 TypeScript 数组中获取最后 N 个元素

2025-10-09
浏览次数:
返回列表

从 typescript 数组中获取最后 n 个元素

本文介绍了如何使用 TypeScript 从数组中提取最后 N 个元素。我们将讨论在数组长度满足特定条件时返回原数组,否则返回数组的后 N 个元素的方法,并提供代码示例和改进方案,帮助开发者更灵活地处理数组数据。

问题分析

原始代码存在一些问题:

  1. 逻辑错误: 使用 || (OR) 运算符判断数组长度是否在 2 到 10 之间是不正确的。应该使用 && (AND) 运算符来确保数组长度同时大于等于 2 且小于等于 10。
  2. 数组创建: 代码中创建了一个新的数组 result,并将传入的 name 和 schedule 包装成一个对象后放入数组。这导致函数始终返回一个包含一个元素的数组,而不是操作传入的数组。
  3. 切片数量错误: 原始代码中 slice(-9) 试图返回倒数第 9 个元素到最后一个元素,而题目要求返回最后 10 个元素。

解决方案

以下是修正后的代码,它接受一个数组作为输入,并根据数组长度返回不同的结果:

青泥AI 青泥AI

青泥学术AI写作辅助平台

青泥AI 360 查看详情 青泥AI
interface ScheduleItem {
  course: string;
  hours: number;
}

interface Schedule {
  name: string;
  schedule: ScheduleItem[];
}

export const sliceData = (dataToSlice: Schedule[], fromLastElement: number = 10): Schedule[] => {

  if (dataToSlice.length >= 2 && dataToSlice.length <= 10) {
    return dataToSlice; // 返回原始数组
  }

  // 否则,返回数组的最后 N 个元素
  return dataToSlice.slice(-fromLastElement);
}

代码解释:

  1. 接口定义: 定义了 ScheduleItem 和 Schedule 接口,用于类型注解,提高代码可读性和可维护性。
  2. 函数签名: sliceData 函数接受两个参数:
    • dataToSlice: 要处理的 Schedule 类型的数组。
    • fromLastElement: 可选参数,表示要返回的最后元素的数量,默认为 10。
  3. 条件判断: 使用 dataToSlice.length >= 2 && dataToSlice.length
  4. 数组切片: 如果数组长度不在 2 到 10 之间,则使用 dataToSlice.slice(-fromLastElement) 返回数组的最后 fromLastElement 个元素。slice() 方法的负数索引表示从数组末尾开始计数。

使用示例

const myArr: Schedule[] = [
  { "name": "John", "schedule": [{ "course": "ESL", "hours": 25 }, { "course": "Math", "hours": 50 }, { "course": "History", "hours": 75 }] },
  { "name": "Julia", "schedule": [{ "course": "English", "hours": 20 }, { "course": "Geography", "hours": 35 }, { "course": "Math", "hours": 55 }] },
  { "name": "Adam", "schedule": [{ "course": "Physics", "hours": 15 }, { "course": "Math", "hours": 50 }, { "course": "Chemistry", "hours": 60 }] }
];

const slicedArray = sliceData(myArr); // 返回 myArr (因为长度小于等于 10)
console.log(slicedArray);

const longArray: Schedule[] = [
    { "name": "John", "schedule": [{ "course": "ESL", "hours": 25 }, { "course": "Math", "hours": 50 }, { "course": "History", "hours": 75 }] },
    { "name": "Julia", "schedule": [{ "course": "English", "hours": 20 }, { "course": "Geography", "hours": 35 }, { "course": "Math", "hours": 55 }] },
    { "name": "Adam", "schedule": [{ "course": "Physics", "hours": 15 }, { "course": "Math", "hours": 50 }, { "course": "Chemistry", "hours": 60 }] },
    { "name": "John", "schedule": [{ "course": "ESL", "hours": 25 }, { "course": "Math", "hours": 50 }, { "course": "History", "hours": 75 }] },
    { "name": "Julia", "schedule": [{ "course": "English", "hours": 20 }, { "course": "Geography", "hours": 35 }, { "course": "Math", "hours": 55 }] },
    { "name": "Adam&quot;, "schedule": [{ "course": "Physics", "hours": 15 }, { "course": "Math", "hours": 50 }, { "course": "Chemistry", "hours": 60 }] },
    { "name": "John", "schedule": [{ "course": "ESL", "hours": 25 }, { "course": "Math", "hours": 50 }, { "course": "History", "hours": 75 }] },
    { "name": "Julia", "schedule": [{ "course": "English", "hours": 20 }, { "course": "Geography", "hours": 35 }, { "course": "Math", "hours": 55 }] },
    { "name": "Adam", "schedule": [{ "course": "Physics", "hours": 15 }, { "course": "Math", "hours": 50 }, { "course": "Chemistry", "hours": 60 }] },
    { "name": "John", "schedule": [{ "course": "ESL", "hours": 25 }, { "course": "Math", "hours": 50 }, { "course": "History", "hours": 75 }] },
    { "name": "Julia", "schedule": [{ "course": "English", "hours": 20 }, { "course": "Geography", "hours": 35 }, { "course": "Math", "hours": 55 }] },
    { "name": "Adam", "schedule": [{ "course": "Physics", "hours": 15 }, { "course": "Math", "hours": 50 }, { "course": "Chemistry", "hours": 60 }] }
];
const slicedLongArray = sliceData(longArray); // 返回 longArray 的最后 10 个元素
console.log(slicedLongArray);

const slicedLongArrayCustom = sliceData(longArray, 5); // 返回 longArray 的最后 5 个元素
console.log(slicedLongArrayCustom);

总结

本文提供了一个 TypeScript 函数,用于从数组中提取最后 N 个元素。通过修正原始代码中的逻辑错误,并添加了类型注解和可选参数,使函数更加健壮、灵活和易于使用。 开发者可以根据实际需求调整 fromLastElement 参数,以获取所需数量的最后元素。

以上就是从 TypeScript 数组中获取最后 N 个元素的详细内容,更多请关注其它相关文章!


# 并将  # 无锡推广网站有哪些好  # 标准seo优化活动方案  # 深圳seo专注收索引擎优化  # 灵武网站排名优化  # 嘉兴网站优化经验师培训  # 山东网络营销seo优化  # 来安seo优化  # 青海矩阵seo不做行吗  # 汕尾营销推广哪里好  # 哈尔滨网站建设信息  # typescript  # 中文网  # 相关文章  # 所需  # 是从  # 如何在  # 服务端  # 可选  # 运算符  # 组中  # 代码可读性 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Composer如何解决json扩展缺失的错误  深入理解Google Cloud Datastore查询:祖先路径与数据一致性  composer 和 npm/yarn 在管理依赖方面有什么核心思想差异?  J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析  蛙漫2台版漫画地址 Manwa2正版网页版链接  网易大神怎么保存别人动态的图片_网易大神动态图片保存方法  Mac怎么查看崩溃日志_Mac控制台错误报告分析  一加Ace 6T支持全新明眸护眼:通过了最严苛的护眼小金标认证  优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题  处理动态列数据:J*a ArrayList的正确初始化与字符累加教程  将HTML Canvas内容转换为可上传的图像文件(File对象)  CSS实现侧边栏导航项全宽圆角悬停背景效果  怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法  2026春节假期时间安排 2026春节假日查询  ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接  Node.js CSV 数据处理:基于字段空值条件过滤整条记录的策略  HTML5原生日期选择器与jQuery UI:实现日期选择器的联动与程序化控制  J*aScript中在Map循环中检测并处理空数组元素  ACG动漫视频网入口 ACG动漫*免费正版观看地址  QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问  Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程  b站如何看历史记录_b站观看历史找回方法  印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】  深入理解J*a合成构造器:何时以及为何阻止其生成  4399网页游戏电脑版全新入口 4399电脑端在线玩指南  2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析  Win10系统服务哪些可以禁用 Win10安全优化服务列表【干货】  c++ 获取系统当前时间 c++时间戳获取方法  火锅吃太多会怎样 火锅吃太多会上火吗  夸克AO3官网入口_AO3镜像网站2025推荐  怎样使用“本地安全策略”提升Windows安全性_Secpol.msc配置指南【高手】  谷歌学术网站直达地址 谷歌学术搜索网页版一键进入  网站内容防复制粘贴的实现策略与局限性  win11如何加载ICC颜色配置文件 Win11校色文件安装与显示器色彩管理【指南】  React中useState与局部变量:理解组件状态管理与渲染机制  电脑IP地址怎么查 查看本机IP地址的几种方法  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  写好的html代码怎么运行出来_运行写好的html代码方法【教程】  ArrayList与LinkedList操作复杂度详解:遍历与修改  Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议  小红书网页版入口链接分享 小红书官网直接进  CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题  如何使用Go和Martini动态服务解码后的图片  在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全  Python多版本共存与虚拟环境管理深度指南  Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全  qq游戏跨平台入口_qq游戏多设备同步登录  外媒分析《GTA6》定价:卖100美元可以但真没必要!  蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】  微信客户端如何收红包_微信客户端接收红包使用教程 

搜索