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.lengthmonsterx 数组更新为 cGrid.length

for(var i = 0; i < cGrid.length; i++) 
    pGridx[i] += g;
    monsterx[i] += 1;

考虑到几乎所有这些索引的第一次monsterx[i]undefined,而undefined + 1NaN,这就是你得到一个充满NaN 的数组的方式——除了前两个元素以有效数字开头。

你有一个类似的循环更新monstersy

(为了将来参考,如果您不确定如何更新变量,第一步是搜索该变量的代码。这就是我为找到上述问题所做的一切。)

【讨论】:

感谢您的帮助!每当类似的事情再次发生时,我会确保按照您的提示进行操作。

以上是关于Javascript 数组意外地充满了 NaN的主要内容,如果未能解决你的问题,请参考以下文章

数组键 number 和 "number" 意外地被认为是相同的

logcat 充满消息“nativeGetEnabledTags 的意外值:0” - 如何摆脱这个? [复制]

使用 jQuery 的 XML 到 javascript 数组

递归地展平数组(不循环)javascript

实时播放充满 pcm 值的数组

Python - 尝试使用意外的 mimetype 解码 JSON: