我有一个数组:
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}]}
];
如果myArr的长度大于2或小于10,则需要返回myArr不变,但如果它大于10则需要返回数组的最后15个对象。
我写了函数,但是数组返回空。
export const slicedData = (schedule:Schedule[], name:string) =>
{
const result:Schedule[] = [];
result.push({name, schedule});
if(result.length>=2 && result.length<=10){
return result;
}
return result.slice(-9);
}
请问我错过了什么?
2条答案
按热度按时间n8ghc7c11#
正如@jsejcksn在评论中所写的,您应该使用AND(&&)运算符而不是OR(||这保证了该值在2和10之间。
同样,正如@Martijn所注意到的,您正在创建一个只有一个值的数组。如果你已经有了
myArr
,你应该把它传递给函数并使用它。如果你没有数组,最好创建一个函数,首先创建你想要的数组,然后调用
sliceData
。一个小小的改进是传递要返回的最后一个元素的数量:
dpiehjr42#
我猜问题是你把一个对象推到
result
中,然后等待整个myArr
被返回。此外,在推送时,您检查的是result.length
而不是myArr
长度。如果你想要数组的最后15个对象,你需要使用-15
而不是-9
。修改后的代码应该像下面这样。