现代 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.from
与 map
非常相似 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>`)
给定一个数字 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.from
与 map
非常相似 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>`)