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), [])
