【问题标题】:Map returns Empty statement arrayMap 返回 Empty 语句数组
【发布时间】:2022-06-17 23:17:21
【问题描述】:
我有这个功能
function getDaysArray(days: number): number[] {
return [...new Array(days)].map((_x, i) => {
return i + 1;
});
}
它应该按月返回一个天数组,
例如,如果我登录 getDaysArray(31) 我希望有一个这样的数组
[1,2,...,31]
但相反,我得到了这个:
[empty × 31]
有人知道发生了什么吗?
【问题讨论】:
标签:
javascript
arrays
typescript
array.prototype.map
【解决方案1】:
你可以这样做
function getDaysArray(days) {
return Array.from({length: days}).map((_, i) => i + 1)
}
console.log(getDaysArray(31))
【解决方案2】:
您正在创建数组的一个实例并在内存中保留x 位置,但没有用某些东西填充每个位置。
你可以把你的函数变成:
function getDaysArray(days: number): number[] {
return [...new Array(days).fill(null)].map((_x, i) => {
return i + 1;
});
}
这应该返回正确的结果。注意new Array后使用.fill方法
【解决方案3】:
当您执行new Array(10) 时,您实际上使用 [empty * 9, 10] 创建了一个数组
并且地图只会在数组[10]
一个技巧是用你想要的长度创建一个空字符串,然后填充它。
[...''.padEnd(10)].map((_,i)=>i+1)
function getDaysArray(days: number): number[] {
return [...''.padEnd(10)].map((_,i)=>i+1);
}