Javascript 数组意外地充满了 NaN
Posted
技术标签:
【中文标题】Javascript 数组意外地充满了 NaN【英文标题】:Javascript Array gets filled with NaN unexpectedly 【发布时间】:2017-07-24 23:40:36 【问题描述】:我目前正在制作一个小型滚动画布游戏,并且正在尝试实现怪物。我为怪物保留了两个数组,一个用于它们的 x 位置,一个用于它们的 y 位置。出于某种意想不到的原因,两个数组都填充了 1152 个元素,其中两个是预定义的,其他的都是“NaN”。
这是该程序的链接: http://codepen.io/kenshin791011/pen/WpxQmg
(monsterMove函数在按键按下时运行)
var monsterx = [13, 5],
monstery = [41, 42];
function monsterMove()
for(var i = 0; i < monsterx.length; i++)
var z = Math.floor(Math.random() * 4);
switch(z)
case 0:
monsterx[i] -= 1;
break;
case 1:
monstery[i] -= 1;
break;
case 2:
monsterx[i] += 1;
break;
case 3:
monstery[i] += 1;
break;
【问题讨论】:
不是你要问的,但你有没有想过将 X 和 Y 坐标存储在一起:monsters = [x:13,y:41, x:5,y:42]
?对我来说似乎更整洁。
哦,我不知道我能做到这一点XD
【参考方案1】:
您的代码笔中 JS 的以下循环正在将元素 0 到 cGrid.length
的 monsterx
数组更新为 cGrid.length
:
for(var i = 0; i < cGrid.length; i++)
pGridx[i] += g;
monsterx[i] += 1;
考虑到几乎所有这些索引的第一次monsterx[i]
是undefined
,而undefined + 1
是NaN
,这就是你得到一个充满NaN
的数组的方式——除了前两个元素以有效数字开头。
你有一个类似的循环更新monstersy
。
(为了将来参考,如果您不确定如何更新变量,第一步是搜索该变量的代码。这就是我为找到上述问题所做的一切。)
【讨论】:
感谢您的帮助!每当类似的事情再次发生时,我会确保按照您的提示进行操作。以上是关于Javascript 数组意外地充满了 NaN的主要内容,如果未能解决你的问题,请参考以下文章
数组键 number 和 "number" 意外地被认为是相同的
logcat 充满消息“nativeGetEnabledTags 的意外值:0” - 如何摆脱这个? [复制]