繁体   English   中英

突然未定义数组js

[英]suddenly undefined array js

我对遗传算法感到好奇。

当我碰壁时,我正在做发电开关部分。 我从以前的actor数组中删除了下一代的父级,将它们推到了parents数组中,并且正要从父级数组中删除随机的父对,并将它们存储在progen1和progen2变量中,但是由于某种原因progen1是未定义的,虽然我可以在progen1存储在父母数组中时访问它的元素。

这段代码:

var n1=Math.floor((Math.random(Math.floor(parents.length))));
console.log(parents[n1].cromossomo[0]);
var progen1=parents.splice(n1);
console.log(progen1.cromossomo[0]);
var n2=Math.floor((Math.random(Math.floor(parents.length))));
var progen2=parents.splice(n2);

生产:

{dx: -4.805923044269889, dy: -2.447397585132567}dx: -4.805923044269889dy: -2.447397585132567__proto__: Object
scripts.js:94 Uncaught TypeError: Cannot read property '0' of undefined
at switchGeneration (scripts.js:94)
at run (scripts.js:140)

我发疯了,不知道为什么会这样!

splice()返回从数组中删除的所有元素的数组。 因此progen1是从n1开始的所有parents元素的数组,而不是单个对象。 该数组没有cromossomo属性,因此progen1.cromossomo[0]尝试获取undefined0索引。

如果您打算从parents删除1个元素,则需要在调用splice()时指定要删除的元素数。 然后,您可以为该值编制索引以获取该元素。

progen1 = parents.splice(n1, 1)[0];

错误消息显示: Cannot read property '0' of undefined

看着您的代码片段,我发现cromossomo[0]

如果cromossomo不存在于parents[n1]progen1 ,则它是undefined ,从而导致错误。

因此,也许您首先看一下这些,并验证其中每个都有一个cromosso

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM