Javascript 是否存在Array.isArray()不';不行?

Javascript 是否存在Array.isArray()不';不行?,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,所以我一直在尝试调试我正在编写的物理引擎,对于多维空间哈希图,我需要分配一个二维数组 为什么这段代码给我“无法读取未定义的属性‘push’”?在我的if语句和我尝试推进数组之间是否有什么事情发生 编辑“this”引用PhysicsEngine实例,它保留对“entities”数组和“hashmap”数组的引用 功能物理引擎(游戏){ 这个游戏=游戏; 这是实体=[]; this.hashmap=createArray(32,32); } 对于(var i=0;i

所以我一直在尝试调试我正在编写的物理引擎,对于多维空间哈希图,我需要分配一个二维数组

为什么这段代码给我“无法读取未定义的属性‘push’”?在我的if语句和我尝试推进数组之间是否有什么事情发生

编辑“this”引用PhysicsEngine实例,它保留对“entities”数组和“hashmap”数组的引用

功能物理引擎(游戏){
这个游戏=游戏;
这是实体=[];
this.hashmap=createArray(32,32);
}
对于(var i=0;i
我认为这个代码:

this.hashmap[hmx] = [];
      if(!Array.isArray(this.hashmap[hmx][hmy])) {
        this.hashmap[hmx][hmy] = [];
      }
这是不对的。特别是,“if”条件测试this.hashmap[hmx][hmy]是否为数组。问题是,this.hashmap[hmx]=[](正如您之前设置的那样),因此this.hashmap[hmx][hmy]未定义,javascript抛出错误“未定义的不是对象”


也许这就是问题所在?

很好。你能解释一下这里使用的
this
和你的完整代码吗?如果
hmx
是一个数组,但是
hmy
不是数组呢?hashmap在哪里定义的?安德鲁安德森:仔细阅读,弄清楚第二个
if
什么时候不会喝咖啡?!那完全是不负责任的!比特可能已经死了!谢谢,这就是问题所在。虽然我不能在这里给你投票,因为之前有人在上面的评论中回答了同样的问题。不过我很感谢你抽出时间。
this.hashmap[hmx] = [];
      if(!Array.isArray(this.hashmap[hmx][hmy])) {
        this.hashmap[hmx][hmy] = [];
      }