我有以下功能:
const arrayOfStrings = n => new Array(n)
.fill(new Array(2 * n - 1).fill(' '))
.map((e, i) => e
.fill(i, i, e.length - i)
.join(''));
我希望在调用此arrayOfStrings(3)
时,我希望它返回以下内容:
[
'00000',
' 111 ',
' 2 '
]
然而它没有,相反它返回:
[
'00000',
'01110',
'01210'
]
或者,如果我从地图中删除.join('')
并将e
作为数组返回,则会返回:
[
[0,1,2,1,0],
[0,1,2,1,0],
[0,1,2,1,0]
]
我相信的是:
fill
map
。{/ li>
join
存在时,目标子数组(e
)将作为每次迭代的字符串返回,为下一个调用fill
留下一个更少的数组迭代map
。join
不存在时,所有三个e
元素都保留数组,并且每次迭代都会在每个子数组上运行fill
。问题
我并不特别关注如何来获得我想要的结果。我想知道为什么在fill
内调用map
会以这种方式行事?
由于