现代 javascript 可以创建一个 X 数量的数组吗? (像 `map` 但在数字上而不是数组上)

Can modern javascript create an array of X number of things? (like `map` but on a number rather than an array)

给定一个数字 x ,最好的说法是给我 x 给定字符串、对象等的数字,然后将它们全部放入一个数组中。

理想情况下,他们可以访问他们的索引,仅此而已。

我知道我可以创建一个数组并在 for 循环中推送到该数组(使用 i < x;),但我希望它更干净、更原生。

这种语法:

const arrayOfDivs = numberOfDivs.repeat(idx => html`<div id=${idx}></div>`;

// numberOfDivs == 3
arrayOfDivs == [
  '<div id=[=11=]></div>' , 
  '<div id=></div>' ,
  '<div id=></div>'   
]

如果没有这样的办法,别人用什么,能不能请教javascript发明出来?

我通常执行一个 for 循环并推送到一个数组,但我记得从之前的数字创建一个 [0,1,2,3,4] 数组,然后 .map 从那个开始,糟糕的时候!

谢谢

在 ES6 中,您可以使用 spread syntax and Array.prototype.keys() 创建一个包含元素 1 到 n 的数组(然后您可以像您提到的那样 .map):

const arr = [...Array(10).keys()];
// arr => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

如果你想同一个对象重复n次,你可以使用Array.prototype.fill():

const arr = Array(5).fill('x');
// arr => ['x', 'x', 'x', 'x', 'x']

like map

Array.frommap 非常相似 API。您可以为其提供第一个参数的 .length 属性 的数字:

function createSeveral<Item>(count: number, itemFactory: () => Item): Item[] {
  return Array.from({ length: count }, itemFactory) as Item[];
}

因此,对于您的情况,您可以这样使用它:

Array.from({ length: numberOfDivs }, (_, i) => html`<div id=${i}></div>`)