TypeScript数组处理函数返回空数组的问题求助
TypeScript数组处理函数返回空数组的问题求助
嘿,我来帮你捋捋这个问题~ 你的函数现在的逻辑完全偏离了你原本的需求,这就是为什么会出现奇怪结果的原因,咱们一步步拆解:
核心问题在哪?
函数逻辑完全没处理目标数组
你原本想要处理的是类似myArr这样的用户数组,但你的函数现在是把传入的name和schedule包装成了一个单元素数组result,然后去判断这个只有1个元素的数组的长度——这和你要处理整个用户列表的需求完全不搭边。条件判断和切片逻辑错误
你的判断条件result.length>=2 && result.length<=10永远不会成立,因为result里永远只有1个元素,所以每次都会走到return result.slice(-9)。不过理论上这个切片对于长度1的数组来说应该返回原元素,你说返回空可能是调用方式不对,但核心还是逻辑错了。另外你需求里是要返回最后15个元素,结果写的是slice(-9),参数也错了。
修正后的函数
先明确你的需求:输入用户数组,长度≤10时返回原数组;长度>10时返回最后15个元素。我给你写了修正后的版本,还加上了类型定义确保TypeScript安全:
// 先定义类型,和你的数据结构匹配 interface Course { course: string; hours: number; } interface UserSchedule { name: string; schedule: Course[]; } export const slicedData = (userList: UserSchedule[]) => { // 长度≤10时返回原数组(用展开运算符返回副本,避免原数组被意外修改) if (userList.length <= 10) { return [...userList]; } // 长度超过10时,取最后15个元素 return userList.slice(-15); };
怎么调用?
用你给出的myArr举例,调用方式是这样的:
const myArr = [ {"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 processedData = slicedData(myArr); console.log(processedData); // 因为长度是3≤10,所以返回原数组
如果你的数组长度是20,这个函数就会自动返回最后15个元素;如果长度是12,因为12<15,所以还是返回整个数组~
备注:内容来源于stack exchange,提问作者newDev
相关产品推荐
相关产品推荐

