如何解决将多维数组插入多维数组-Javascript
我有2个多维数组。我想在特定位置将较小的数组值插入较大的数组。
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位置到大型数组中。”
我该怎么做?
解决方法
一种简单的方法来实现您想要的,只是迭代smallArray
的值和索引,使用它们以适当的偏移量将这些值插入largeArray
:
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
在指定的largeArray
坐标处是否适合x,y
内。如果不是这种情况,则取决于您想要的结果(未修改的数组或仅适合修改的元素),您将需要检查索引是否超出largeArray
的范围,例如
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,y) {
if (small.length + y > largeArray.length ||
small[0].length + x > largeArray[0].length)
return big;
small.forEach((a,3,1));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。