首页 > 解决方案 > 如何在 JavaScript 中用 2D Smaller 数组填充 2D 数组

问题描述

如果没有得到很好的解释,我深表歉意。我对 JavaScript 很陌生。

我有一个 10x10 的 2D arrayA 和一个 5x8 的 2D arrayB。默认情况下,较小的 arrayB 填充数据,较大的 arrayA 仅填充 0。

如何将数据从 arrayB 移动到 arrayA,同时仍然将 arrayA 的剩余空间保留为 0?

最终结果必须是 arrayA 应该包含与 arrayB 相同顺序的所有数据,但剩余空间仍然只包含 0。

标签: javascriptarraysreactjs

解决方案


使用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)));


推荐阅读