瀟瀟雨雨
2022-09-16 21:17:42
為什么這里沒有調(diào)用 ?map()let N = 16;let fullSizeBufs = Array(2).map((x) => Array(N).fill(-1))console.log(fullSizeBufs)我們得到[undefined, undefined]我甚至在上放了一個斷點:它沒有命中。只是跳過了。正確的語法是什么?Array(N).fill(-1)map()
2 回答

心有法竹
TA貢獻1866條經(jīng)驗 獲得超5個贊
您必須填充第一個數(shù)組,否則 map 上沒有要迭代的內(nèi)容。Array 構(gòu)造函數(shù)使用未定義的引用進行初始化,這與 [未定義、未定義、未定義] 不同,后者實際上是一個包含 3 個對未定義的引用的數(shù)組。
例如: 與[,,,].map(x=>console.log(x))[undefined,undefined,undefined].map(x=>console.log(x))
let N = 16;
let fullSizeBufs = Array(2).fill(0).map((x) =>
Array(N).fill(-1)
)
console.log(fullSizeBufs)

慕村225694
TA貢獻1880條經(jīng)驗 獲得超4個贊
您可以將 spread 運算符與第一個數(shù)組結(jié)合使用,以使其可迭代。
let N = 16;
let fullSizeBufs = [...Array(2)].map((x) =>
Array(N).fill(-1)
)
console.log(fullSizeBufs)
添加回答
舉報
0/150
提交
取消