typescript 替代代码填充一个数组与一系列增加任何值[重复]

klsxnrf1  于 2023-05-23  发布在  TypeScript
关注(0)|答案(3)|浏览(124)

此问题已在此处有答案

Does JavaScript have a method like "range()" to generate a range within the supplied bounds?(90个答案)
How to generate range of numbers from 0 to n in ES2015 only?(16个答案)
functional way to iterate over range (ES6/7) [duplicate](3个答案)
JavaScript function similar to Python range()(32个答案)
How to create an array containing 1...N(78个答案)
16小时前关门了。
下面的typescript函数seriesIncrementedBy5返回一个数组,其中数字从5开始到upperLimit,增量为5。
有没有一种方法可以用任何最新的打字脚本ES6高级函数来替换这5行代码,这将占用不到5行。

private seriesIncrementedBy5(upperLimit: number): number[] {
    const series = [];
    for (let s = 5; s <= upperLimit + 5; s += 5) {
        series.push(s);
    }
    return series;
}
643ylb08

643ylb081#

您可以创建一个大小正确的数组,然后在其上添加map

const seriesIncrementedBy5 = upperLimit => [...Array((upperLimit/5|0)+1)]
        .map((_, i) => 5 * (i + 1));
console.log(seriesIncrementedBy5(10));
console.log(seriesIncrementedBy5(9));
alen0pnh

alen0pnh2#

可以使用Array.from方法。

private seriesIncrementedBy5(upperLimit: number): number[] {
  return Array.from({ length: Math.floor(upperLimit / 5) }, (_, i) => (i + 1) * 5);
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from

fhg3lkii

fhg3lkii3#

您可以使用Array.from,它可以接受具有length: number属性和第二个参数填充函数的对象:

const seriesIncrementedBy5 = (upperLimit: number): number[] =>
  Array.from({ length: Math.floor(upperLimit / 5) + 1 }, (_, i) => (i + 1) * 5);

为了计算长度,我们将upperLimit除以5并将其取整以获得整数;添加+ 1以将upperLimit包括在阵列中是至关重要的。为了填充,我们将使用元素的索引;由于我们从5开始,而不是0,我们将+ 1添加到索引并将其乘以5
Playground

相关问题