網站搜尋

javascript - 在這種情況下,如何使用或不使用展開語法來獲取修改後的陣列?


如何簡化並改進下面的程式碼?

如果 myarr.length === 2,下面的程式碼會如預期運作:

[...myarr[0].arrk.map(myfunc), ...myarr[1].arrk.map(myfunc), ...myarr[2].arrk.map(myfunc)]

如何修改上述代碼,使得 myarr 陣列可以是任何長度,這樣上述代碼就可以適用於任何長度,而不僅僅是 2?應該是全部,而不是 2。

附言:我相信這個解決方案

myarr.map(a => a.arrk.map(myfunc))

太接近正確答案,但不完全正確:它返回 [Array(1), Array(2)],而不是元素。

謝謝你。

答案#1

你可以嘗試使用 Array.prototype.flatMap() 來做到這一點:

myarr.flatMap(({arrk}) => arrk.map(myfunc))

或者,如果你的環境中沒有 .flatMap(),可以使用 Array.prototype.reduce() 來達到同樣的效果:

myarr.reduce((acc, {arrk}) => (acc.push(...arrk.map(myfunc)), acc), [])