如何在ES2015中仅生成从0到n的数字范围?

2022-08-30 01:55:15

我总是发现JavaScript中缺少的函数,因为它在python和其他版本中可用?有没有简洁的方法可以在ES2015中生成数字范围?range

编辑:我的问题与提到的重复不同,因为它是特定于ES2015而不是ECMASCRIPT-5的。另外,我需要范围从0开始,而不是特定的起始数字(尽管如果在那里会很好)


答案 1

您可以在新创建的数组的键上使用展开运算符。

[...Array(n).keys()]

Array.from(Array(n).keys())

如果使用 TypeScript,则语法是必需的Array.from()


答案 2

我还发现了一种更直观的方法:Array.from

const range = n => Array.from({length: n}, (value, key) => key)

现在,此函数将返回从 0 到 n-1 的所有数字range

要支持的范围的修改版本,是:startend

const range = (start, end) => Array.from({length: (end - start)}, (v, k) => k + start);

编辑正如@marco6所建议的那样,如果它适合您的用例,则可以将其作为静态方法。

Array.range = (start, end) => Array.from({length: (end - start)}, (v, k) => k + start);

并将其用作

Array.range(3, 9)