如何使用 Array.fill 在 JavaScript 中创建 0...499?

How to use Array.fill to create 0...499 in JavaScript?

我想使用 Array.fill 方法从 0...499 创建一个序列,如

const arr = []
for(let i = 0; i < 500; i++)
   arr.push(i);

目前,我正在使用 Array.from 比如:

const arr = Array.from(Array(500).keys())

但是我怎样才能只使用 Array.fill 来创建序列呢?有可能吗?

不,你不能单独使用 fill 来完成,因为 fill 方法添加了一个静态值

The fill() method fills (modifies) all the elements of an array from a start index (default zero) to an end index (default array length) with a static value. It returns the modified array.

console.log(new Array(500).fill(0).map((_,i) => i ))
console.log(Array.from(Array(500).keys()))

单独使用 fill 无法完成您的要求。您必须将它与一种或多种其他方法结合使用。

我不能说我 推荐 这种方法,因为它真的不像惯用的 JavaScript,但只是为了演示目的,这里有一个解决方案使用 fill 来填充结果数组(而不是仅仅使用它来绕过 Array 构造函数的尴尬)。它也比替代方案更冗长,性能可能更差。

console.log(Array.from({ length: 500 }).reduce((x, y, i, a) => (a.fill(i, i, i + 1), a), []))

就其价值而言,我发现 Array.from({ length: 500 }, (_, i) => i) 正如 所建议的那样更加优雅。

您可以生成迭代器并将其推送到新数组。

[...Array(5).keys()];
 => [0, 1, 2, 3, 4]

您可以像这样使用 one-line 助手:

function createArrayWithNumbersFromRange(start: number, end: number): number[] {
  return [...Array(end - start + 1)].map((_, index) => start + index);
}