Javascript 访问Array.map()中的上一个父值

Javascript 访问Array.map()中的上一个父值,javascript,ecmascript-6,pascals-triangle,Javascript,Ecmascript 6,Pascals Triangle,我试图创建一个函数,用Array.map()函数在javascript中创建pascals三角形 实际上,我正在使用这个函数: let triangle=[], 最大行数=5 //纵队 for(设i=0;i{ 常量行数据=数组(i+1) .fill() .map((uuj)=> !j | | j==i 1. :acc[i-1][j-1]+acc[i-1][j] ) acc.push(行数据) 返回acc }, []) triangle.forEach(row=>console.log(JSON

我试图创建一个函数,用Array.map()函数在javascript中创建pascals三角形

实际上,我正在使用这个函数:

let triangle=[],
最大行数=5
//纵队
for(设i=0;i对于(让j=0;j,因为
Array.prototype.map()
不会实时改变源数组,而是返回新数组,一旦它在源数组中循环完成,实际上就没有访问
三角形的点了-它仍然是一个由5项组成的稀缺数组:
[,,,]
(由
Array().fill()
)返回),直到
.map()
-循环结束

要解决此问题,您可以提出递归方法,或者使用:

const maxRows=5,
三角形=数组(最大行)
.fill()
.reduce((acc,i)=>{
常量行数据=数组(i+1)
.fill()
.map((uuj)=>
!j | | j==i
1.
:acc[i-1][j-1]+acc[i-1][j]
)
acc.push(行数据)
返回acc
}, [])
triangle.forEach(row=>console.log(JSON.stringify(row)))

.as console wrapper{min height:100%;}
@YevgenGorbunkov所有的值在内部都是未定义的。我们必须弄清楚它对代码不起作用,因为使用
数组(maxRows)得到的结果。fill()
是未定义的
数组。
.map()
实际上并没有对
三角形进行适当的变异,一旦变异完成,它会返回新的数组。要解决这个问题,您可以使用(使一些数据在迭代过程中发生变异)或使用递归方法。不相关:
数组(maxRows)。fill().map(回调)
可以替换为
数组。from({length:maxRows},回调)
@YevgenGorbunkov真的吗?
数组。from
跳过用未定义位填充数组。因此,我认为可能是faster@adiga:我相信,这是因为js引擎在处理已知大小的数组时比在运行中构建数组要优化得多