我们如何能够使用下面的代码建立一个连贯的矩阵?

问题描述 投票:-1回答:1

作者说:数组将其内容存储在一个width×height元素的数组中。元素是逐行存储的,因此,例如,第五行中的第三个元素(使用从零开始的索引)存储在位置4×宽度+ 2处。问题是如何有一个相干数组如果假设由于方括号中的等式,指数永远不会达到2,宽度为5;

   let content = [];
   function element(x,y){return undefined;}

for (let y = 0; y < height; y++) {
  for (let x = 0; x < width; x++) {
    content[y * width + x] = element(x, y);
  }
}
javascript for-loop matrix
1个回答
1
投票

嗨,我不确定我是否正确理解了你的问题,但我试着向你解释你所写的代码。

正如您所写,代码将2D矩阵表示为一维数组。所以,如果我们想要创建一个3 x 2矩阵,看起来像这样(逻辑上)

undefinded0, undefinded1
undefinded2, undefinded3
undefinded4, undefinded5

(我把一个数字用来让思考更容易)如果我们使用你的函数,表示就像这样

[undefined0, undefined1, undefined2, undefined3, undefined4, undefined5] 

因为方括号中的等式,当索引永远不会达到2时宽度为5时,问题是如何有一个连贯的数组

这是真的,数组只有一个维度,这意味着只有一个元素保留在索引2.我认为你可能会混淆一行代表与某种二维二维表示。这里让我举个例子。如果你有这样的矩阵

[
[0, 1, 2, 3, 4, 5], 
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5]
]

每行(甚至第五行)都有一个索引为2的元素,这是上面的表示有两个维度。

© www.soinside.com 2019 - 2024. All rights reserved.