You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS矩阵(二维数组)填充坐标值异常问题求助

问题排查与解决方案

问题根源

你代码里的矩阵创建方式存在引用共享问题:

let matrix = new Array(maxY).fill(new Array(maxX).fill(0));

fill()方法会把同一个数组对象的引用复制到矩阵的每一行。也就是说,矩阵的所有行其实指向的是同一个数组实例——修改任意一行的某个位置,所有行的对应位置都会同步变化。这就是为什么你只修改了第4行和第6行的498列,却发现第2行的498列也变成1的原因。

修复方案

需要确保矩阵的每一行都是独立的数组实例,不能共享引用。可以用以下两种方式创建矩阵:

方式1:使用Array.from

let matrix = Array.from({ length: maxY }, () => new Array(maxX).fill(0));

方式2:使用map

let matrix = new Array(maxY).fill().map(() => new Array(maxX).fill(0));

两种方式都会为每一行生成全新的数组,各行之间互不影响。之后再执行你的坐标填充逻辑:

arr.forEach(el => (matrix[el[1]][el[0]] = 1));
console.log(matrix[2][498]); // 此时会输出预期的0

内容的提问来源于stack exchange,提问作者Paweł Czekaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:50:26