首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多维数组插入多维数组- Javascript

将多维数组插入多维数组- Javascript
EN

Stack Overflow用户
提问于 2020-10-04 06:07:41
回答 1查看 155关注 0票数 0

我有两个多维数组。我希望将小数组值插入到特定位置的较大数组中。

代码语言:javascript
复制
var largeArray = [...Array(4)].map(e => Array(4).fill(0));
var smallArray = [...Array(2)].map(e => Array(2).fill(1));

这非常类似于画布上下文putImageData()函数,在该函数中,您可以在画布上的任何地方插入一个值块。https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/putImageData

但是,我不使用画布,我希望"PutSmallArray“到大数组一个特定的X,Y位置。

我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-04 06:15:32

要实现您想要的结果,一种简单的方法就是迭代smallArray值和索引,使用它们在适当的偏移量处将这些值插入到largeArray中。

代码语言:javascript
复制
var largeArray = [...Array(4)].map(e => Array(4).fill(0));
var smallArray = [...Array(2)].map(e => Array(2).fill(1));

function insertArray(big, small, x, y) {
  small.forEach((a, i) => a.forEach((v, j) => big[y + i][x + j] = v));
  return big;
}

console.log(insertArray(largeArray, smallArray, 1, 1));

请注意,此代码不检查smallArray是否适合在指定的x,y坐标下的largeArray中。如果情况可能不是这样,那么取决于您想要的结果(未经修改的数组或只适合修改的元素),您将需要检查索引是否超出了largeArray的范围。

代码语言:javascript
复制
var largeArray = [...Array(4)].map(e => Array(4).fill(0));
var smallArray = [...Array(2)].map(e => Array(2).fill(1));

// don't update unless the array fits perfectly
function insertArray(big, small, x, y) {
  if (small.length + y > largeArray.length ||
      small[0].length + x > largeArray[0].length)
      return big;
  small.forEach((a, i) => a.forEach((v, j) => big[y + i][x + j] = v));
  return big;
}

console.log(insertArray(largeArray, smallArray, 3, 1));

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64191648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档