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

本文介绍了如何使用 TypeScript 从数组中提取最后 N 个元素。我们将讨论在数组长度满足特定条件时返回原数组,否则返回数组的后 N 个元素的方法,并提供代码示例和改进方案,帮助开发者更灵活地处理数组数据。
问题分析
原始代码存在一些问题:
- 逻辑错误: 使用 || (OR) 运算符判断数组长度是否在 2 到 10 之间是不正确的。应该使用 && (AND) 运算符来确保数组长度同时大于等于 2 且小于等于 10。
- 数组创建: 代码中创建了一个新的数组 result,并将传入的 name 和 schedule 包装成一个对象后放入数组。这导致函数始终返回一个包含一个元素的数组,而不是操作传入的数组。
- 切片数量错误: 原始代码中 slice(-9) 试图返回倒数第 9 个元素到最后一个元素,而题目要求返回最后 10 个元素。
解决方案
以下是修正后的代码,它接受一个数组作为输入,并根据数组长度返回不同的结果:
青泥AI
青泥学术AI写作辅助平台
360
查看详情
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);
}代码解释:
- 接口定义: 定义了 ScheduleItem 和 Schedule 接口,用于类型注解,提高代码可读性和可维护性。
-
函数签名: sliceData 函数接受两个参数:
- dataToSlice: 要处理的 Schedule 类型的数组。
- fromLastElement: 可选参数,表示要返回的最后元素的数量,默认为 10。
- 条件判断: 使用 dataToSlice.length >= 2 && dataToSlice.length
- 数组切片: 如果数组长度不在 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&q
uot;, "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美元可以但真没必要!
蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】
微信客户端如何收红包_微信客户端接收红包使用教程


2025-10-09
浏览次数:次
返回列表
uot;, "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);