[英]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]
尝试获取undefined
的0
索引。
如果您打算从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.