映射数组以设置空元素

ade*_*ago 2 javascript arrays

鉴于:

let input = [0, 1, 2,,,,,7]
Run Code Online (Sandbox Code Playgroud)

我想得到:

let output = [, 1, 22, 333, 4444, 55555, 666666, 7777777]
Run Code Online (Sandbox Code Playgroud)

(即等于乘以

我如何map(或等效的)输入包括值?
如果我这样做,input.map()我会得到,[, 1, 22,,,,,7777777]因为当然map不会迭代值。数据可以是任意的、字符串、对象、数字等。为了简单起见,在本示例中使用数字。

hev*_*ev1 7

您可以fill在应用映射函数之前对数组进行迭代,以便迭代所有索引,包括空索引。

let result = input.fill().map((_,index)=>{/*...*/});
Run Code Online (Sandbox Code Playgroud)

作为第二个参数提供的映射函数Array.from可以类似地使用。

let result = Array.from({length: input.length}, (_, index)=>{/*...*/});
Run Code Online (Sandbox Code Playgroud)

扩展语法不会忽略空槽,因此我们可以使用扩展语法创建数组的副本并map在此之上。这还有一个额外的优点,即每个索引处的元素也可用。

let result = [...input].map((elem, idx)=>{/*...*/});
Run Code Online (Sandbox Code Playgroud)