猿问

为什么这个函数(将对象推送到数组)崩溃p5.js?

我正在构建一个进化模拟应用程序,如果某个生物体的健康状况高于75%,它会再生,然后将生命值减去一半。为此,我创建了一个对象所属类的新实例,然后将所述对象推送到存储其他生物的数组。由于我不知道的原因,这会导致p5.js崩溃。

我试图减少有机体的数量(3)并将其写为该类的函数。

var organisms = []; // array where organisms instances gofunction reproduce(){
  for (let i = 0; i < organisms.length; i++){
     if(organisms[i].life > 0.75){
        // create a genetically similar size
        let size = organisms[i].size + (random() > 0.5 ? 1 : -1 * random() * 2);   
        // declare instance
        let org = new Organism(width, height, size)
        organisms.push(org);
        // prevent infinite reproduction
        organisms[i].life -= 0.5;
        }
    }}

我希望这只是创建新的类实例,但它崩溃了p5.js.


BIG阳
浏览 459回答 2
2回答

莫回无

你已经创建了一个可能永远不会结束的循环条件。for&nbsp;(let&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;organisms.length;&nbsp;i++){在第一次迭代中,假设有机体有5个元素。如果if满足下一行的条件,则将向organisms数组添加另一个元素。下一次迭代将改变下一个元素organisms,但由于你的数组每次增长一个,你将永远不会到达数组的末尾!
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答