替换二维数组中的子数组

Qua*_*hái 0 javascript

我有以下示例:

const arr = [
  ["1", "2", "3", "4"],
  ["1", "2", "3", "4"],
  ["1", "2", "3", "4"],
  ["1", "2", "3", "4"],
  ["1", "2", "3", "4"]
]
Run Code Online (Sandbox Code Playgroud)

arr 是一个二维数组

const subArr = [
  ["a", "b"],
  ["a", "b"]
]
Run Code Online (Sandbox Code Playgroud)

subArr 也是一个二维数组

用位置 (1,1) 中的 subArr 替换 arr 后,我希望预期结果为:

finalArr = [
  ["1", "2", "3", "4"],
  ["1", "a", "b", "4"],
  ["1", "a", "b", "4"],
  ["1", "2", "3", "4"],
  ["1", "2", "3", "4"]
]
Run Code Online (Sandbox Code Playgroud)

我怎样才能用 JavaScript 得到它?非常感谢

car*_*10m 5

可以在下面找到就地解决方案。如果您希望finalArr成为一个新实例,那么您需要在应用函数之前对数组进行一些(深度)复制embed()

 
const arr = [
  ["1", "2", "3", "4"],
  ["1", "2", "3", "4"],
  ["1", "2", "3", "4"],
  ["1", "2", "3", "4"],
  ["1", "2", "3", "4"]
];
const subArr = [
  ["a", "b"],
  ["c", "d"]
];

function embed(subArr,arr,ioff,joff){
// Performs embedding "in place", i. e. in existing array:
subArr.forEach((r,i)=>
  r.forEach((v,j)=> arr[ioff+i][joff+j]=v));
}

embed(subArr,arr,1,1);
console.log(arr);
Run Code Online (Sandbox Code Playgroud)

这仍然是一个“裸机”实现,因为它不检查 subArr 是否真的“完全适合”到目标数组中。它可能会超调,然后会增加目标数组的原始维度。