TypeScript中如何按数值范围初始化数组无需逐个罗列元素?
TypeScript 初始化连续数值数组的方法
TypeScript 本身未内置 [n..m] 这类范围语法糖,但可以通过以下几种简便方式实现同等效果,无需逐个声明元素:
方法1:直接使用
Array.from实现
一行代码即可生成包含两端数值的连续数组,示例(生成5到8的连续数组):const lst: number[] = Array.from({length: 8 - 5 + 1}, (_, index) => 5 + index);其中
8 - 5 +1是计算数组总长度,回调函数通过索引累加起始值得到对应位置的数值。方法2:结合数组
keys()迭代器实现
写法如下:const lst: number[] = [...Array(8 - 5 + 1).keys()].map(index => 5 + index);逻辑是先通过
keys()拿到数组索引的迭代器,展开为索引数组后再通过map加上起始值偏移量。方法3:封装为复用工具函数
如果频繁需要生成连续数组,可以封装成通用的range函数:// 工具函数,生成[start, end]闭区间的连续数值数组 function range(start: number, end: number): number[] { if (end < start) return []; return Array.from({length: end - start + 1}, (_, index) => start + index); } // 调用示例,效果和你预期的[5..8]完全一致 const lst: number[] = range(5, 8); // 输出 [5,6,7,8]
以上所有实现都兼容ES6及以上版本的编译目标,是TypeScript项目中的常用写法。
内容的提问来源于stack exchange,提问作者chris01
相关产品推荐
相关产品推荐

