在雄辩的JavaScript中澄清网格查找 第7章 - 电子生活



雄辩的Javascript,第7章 - 电子生活

试图理解描述如何使用var网格的部分:

var grid = ["top left",    "top middle",    "top right","bottom left", "bottom middle", "bottom right"];
console.log(grid[2 + (1 * 3)]);
// → bottom right

任何可能的解释都会有所帮助。这就是文本提供的内容,我需要澄清:"或者,我们可以使用一个大小宽度×高度的数组,并决定在数组中的位置 x + (y ×宽度)找到 (x,y) 处的元素。有没有另一种方法可以重新表述这种解释?

在此示例中,您正在制作一个 3x2 网格。

通常,你会这样做:

var grid = [["top left", "top middle", "top right"],
            ["bottom left", "bottom middle", "bottom right"]];
grid[1][2]; // "bottom right"

这很简单。 我们制作了一个 2D 数组(矩阵)正在使用 grid[y][x] 访问它。

您显示的示例是尝试使用 1D 数组模拟该矩阵。 不太确定为什么要这样做。 看到你想做什么并不那么明显。 就我个人而言,我认为这样做没有任何好处。

var grid = ["top left", "top middle", "top right",
            "bottom left", "bottom middle", "bottom right"];
grid[2 + (1 * 3)]; // "bottom right"

公式是grid[x + (y * width_of_grid)] 。 那么,为什么会这样呢? 您的元素以 3 为一组。 所以,你需要找到你想要的小组从哪里开始,这就是y * width_of_grid所做的。 找到所需的组开始的位置后,您可以添加x以获取所需的单元格。

同样,不知道为什么会建议将其作为一种选择。 大多数开发人员会选择第一个选项,这很干净且有意义。 第二个只是令人困惑和愚蠢。

最新更新