Javascript:使用二维数组的最有效方法

标签 javascript arrays multidimensional-array

我目前正在为平台游戏制作图 block map 。

我知道在其他语言中,当您引用二维数组时,速度会更快:

world[y][x]

但是,在 JavaScript 中,这重要吗?你能做到吗:

world[x][y]

感谢您的宝贵时间。

最佳答案

首先,Arrays in JavaScript are just specialized objects 。所以当你有 var a = ["entry"]然后去a[0] ,您正在访问 a 的属性存储为"0" 。由于所有属性都转换为 JavaScript 的字符串,这意味着 a[0] === a["0"] 。与 C++ 等语言不同,创建 double 组时,您必须转到 darray[y][x]由于内存是如何创建的,使用JavaScript我们可以将一个对象分配给该位置(因为它只是另一个属性),这样我们就可以按照我们想要的方式解释!

var world = [], // Start out with something empty.
    X = Y = 10; // Get dims.
// Fill that sucker up!
for(var i = 0; i < X; ++i)
{
    var x = [];
    for(var j = 0; j < Y; ++j)
    {
        // Forces a place holder in the array.
        x[j] = undefined;
    }
    world[i] = x;
}

然后很快!现在,您可以去world[x][y]获取存储在这些位置的对象。正如更多信息一样,占位符用于使数组实际上具有 Y 的长度。也是如此。

<小时/>

现在,让我们回到数组只是一个特殊对象这一事实。这意味着我们正在访问对象 world 的属性然后再次在该位置存储的条目中。其中,speed of access受到属性选择存储方式的限制(正如 @zerms 在评论中指出的那样)。

关于Javascript:使用二维数组的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33589892/

相关文章:

php - 如何在不显式编写循环运算符的情况下展平一个简单的数组?

graph - 无需重新访问即可遍历 3D 坐标的算法

JavaScript 类 - 使用 Wea​​kMap 使变量私有(private)化并在其他方法中仍然使用 "this"

javascript - PHP json数组删除JSON文件中的一行

c - 在 C 中对 char 数组进行操作的递归函数中的段错误

C 结构体值在函数内部和外部不同

c++ - delete[]性能问题

javascript - 无法使用 map 将对象添加到另一个对象

javascript - 在 JavaScript 中更新数据后,我的 DOM 对象不会更新

Java练习——用二维数组显示表格