0

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

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

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

这种语法:

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

// numberOfDivs == 3
arrayOfDivs == [
  '<div id=${0}></div>' , 
  '<div id=${1}></div>' ,
  '<div id=${2}></div>'   
]

如果没有这样的方法,其他人使用什么,有人可以要求javascript发明它吗?

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

谢谢

4

2 回答 2

3

喜欢map

Array.from有一个与map. 您可以为它提供一个数字,该数字.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>`)
于 2021-10-07T13:13:34.020 回答
1

在 ES6 中,您可以使用扩展语法创建一个包含元素 1 到 n 的数组,并且Array.prototype.keys()(您可以.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']
于 2021-10-07T12:58:50.803 回答