1 回答
TA贡献1806条经验 获得超5个赞
由于Array.prototype.map()
不会实时就地改变源数组,而是在循环遍历源数组后返回新数组triangle
,因此实际上没有访问的意义- 它仍然是一个包含 5 个项目的稀缺数组:(由)[,,,,]
返回Array().fill()
,直到.map()
循环结束。
为了解决这个问题,您可以想出递归方法,或者使用Array.prototype.reduce()
:
const maxRows = 5,
triangle = Array(maxRows)
.fill()
.reduce((acc, _, i) => {
const rowData = Array(i+1)
.fill()
.map((__,j) =>
!j || j == i
? 1
: acc[i-1][j-1] + acc[i-1][j]
)
acc.push(rowData)
return acc
}, [])
triangle.forEach(row => console.log(JSON.stringify(row)))
.as-console-wrapper{min-height:100%;}
添加回答
举报