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

JavaScript中数组与矩阵互转公式的原理疑问求解

二维矩阵与一维数组的转换公式解析

先明确JavaScript环境下的转换公式:

// r行c列矩阵转一维数组
matrix[x][y] → arr[x * c + y]

// 一维数组转r行c列矩阵
arr[x] → matrix[Math.floor(x / c)][x % c]

为什么转换操作围绕列数(c)展开?

矩阵的每一行固定包含c个元素,把二维矩阵按行平铺成一维数组时,每行的元素会占据连续的c个位置。列数c就是每行的"元素容量",是打通二维坐标和一维索引的核心参照值。

矩阵转数组:x * c + y的推导逻辑

  • x是矩阵的行索引,前面已经有x行完整的元素,每行c个,所以前x行总共占据了x * c个一维数组的位置。
  • y是当前行的列索引,代表它在当前行里是第y个元素(从0开始计数),把前面的总位置数加上y,就得到了这个元素在一维数组里的准确索引。

举个实际例子:3行4列的矩阵,matrix[1][2](第2行第3个元素),前1行有4个元素,1*4=4,加上列索引2,得到数组索引6,对应一维数组的第7个位置(索引从0开始)。

数组转矩阵:整除与取余运算的作用

把一维数组索引x拆成矩阵的二维坐标,本质是拆分出它所在的行和列:

  • 整除Math.floor(x / c):用总索引除以每行的元素数c,取整数商就是行索引。比如索引6除以4得1.5,取整后是1,对应矩阵的第2行。
  • 取余x % c:总索引除以c的余数,就是当前行内的列索引。比如6%4=2,对应矩阵的第3列,正好和上面的例子形成反向验证。

内容的提问来源于stack exchange,提问作者Maxi Meri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:55:54