gpt4 book ai didi

javascript - 是否存在 Array.isArray() 不起作用的情况?

转载 作者:行者123 更新时间:2023-12-02 15:17:12 26 4
gpt4 key购买 nike

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

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

编辑“this”指的是PhysicsEngine实例,它保留对“entities”数组以及“hashmap”数组的引用。

function PhysicsEngine(game) {
this.game = game;
this.entities = [];
this.hashmap = createArray(32, 32);
}

for(var i = 0; i < this.entities.length; i++) {
//Array item may not be a Simulateable Entity
//this.entities[i].simulatePhysics(this);
this.entities[i].ResolveCollisions();
this.entities[i].Move();
hmx = Math.round(Math.abs(this.entities[i].x/32));
hmy = Math.round(Math.abs(this.entities[i].y/32));

if(!logged) {
console.log(this.hashmap);
console.log(this.entities[i]);
console.log(i, hmx, hmy);
console.log(this.hashmap[hmx], this.hashmap[hmy]);
logged = true;
}

if(!Array.isArray(this.hashmap[hmx])) {
this.hashmap[hmx] = [];
if(!Array.isArray(this.hashmap[hmx][hmy])) {
this.hashmap[hmx][hmy] = [];
}
}

this.hashmap[hmx][hmy].push(this.entities[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 会抛出错误“未定义不是对象”。

也许这就是问题所在?

关于javascript - 是否存在 Array.isArray() 不起作用的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34358010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com