簡體   English   中英

如何用 JavaScript 中的 2D Smaller 數組填充 2D 數組

[英]How to fill an 2D array with a 2D Smaller array in JavaScript

如果這沒有得到很好的解釋,我深表歉意。 我對 JavaScript 很陌生。

我有一個 10x10 的 2D arrayA 和一個 5x8 的 2D arrayB。 默認情況下,較小的 arrayB 填充了數據,而較大的 arrayA 填充了 0。

如何將數據從 arrayB 移動到 arrayA,同時仍將 arrayA 的剩余空間保留為 0?

最終結果必須是 arrayA 應該包含與 arrayB 相同順序的所有數據,但剩余的空間仍然只包含 0。

假設我正確理解了這個問題,您可以遍歷arrayB每個值並將其分配在arrayA中的相同索引arrayA

 const arrayA = Array(10).fill(0).map(_ => Array(10).fill(0)) const arrayB = Array(5).fill(0).map(_ => Array(8).fill(1)) for (let y = 0; y < arrayB.length; y++) { for (let x = 0; x < arrayB[y].length; x++) { arrayA[y][x] = arrayB[y][x] } } console.log(arrayA.map(v => v.join(', ')).join('\\n'))

console.log只是為了便於閱讀,以了解矩陣的外觀。

一個簡單的Array.map()將完成這項工作:

 const arrA = [ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ]; const arrB = [ [0,1,2,3,4], [0,1,2,3,4], [0,1,2,3,4], [0,1,2,3,4], [0,1,2,3,4], [0,1,2,3,4], [0,1,2,3,4], [0,1,2,3,4], ]; const B2A = () => arrA.map( (val, index) => val.map( (subVal, subIndex) => { if(arrB[index] && arrB[index][subIndex]) return arrB[index][subIndex] return subVal; }) ) console.log(B2A());

使用Array.from並迭代,而迭代檢查填充數組中是否存在該值。 如果存在,則使用該值,否則使用相同的數組值。

 const fill = (arr1, arr2) => Array.from(arr1, (arr, row) => Array.from(arr, (value, col) => (arr2[row] && arr2[row][col]) || value) ); const arrA = [ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]; const arrB = [ [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4] ]; console.log(JSON.stringify(fill(arrA, arrB)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM