2014-01-06 58 views
-1

海兰, 的特性“值”我坚持以下错误:无法设置未定义

“遗漏的类型错误:无法设置属性‘5’的未定义”

的代码是这样的:

function blank2dArray(width,height) 
    { 
     var result=[[]];//matrix 
     for(var i=0;i<width;i++) 
     { 
      result[i]=new Array(height); 
     } 
     return result; 
    } 


function generate() 
    { 
     var r=blank2dArray(width,height); //generates a blank matrix 
     for(var i=0;i<across.length;i++) 
     { 
     var word=across[i]; 
     for(var j=0;j<across[i].length;j++) 
     { 
      r[ax[i]+j][ay[i]]=word[j]; //at some point ay[i]=5 
     } 
     } 
    } 

across-it is an array of words; 
ax-array of numbers 
ay-array of numbers 

如果我用任何数字代替ax [i]和ay [i],它看起来像是有效的。但这不是它应该采取的行动。 谢谢。

+3

问题在于你的逻辑。在某个时间点,'r [ax [i] + j] [ay [i]]'返回未定义。由于我们不知道'r'' ax'或'ay'是什么,这就像我们可以告诉你的一样。你能举一个例子说明你如何使用这段代码,以便我们重新创建它并帮助调试它? –

+0

@KevinB:具体来说,在某个时间点'r [ax [i] + j]'是'undefined'。 –

+0

顺便说一句,你的'blank2dArray'函数创建并抛出一个数组,并建议你可能想再次看看你对JavaScript中的数组是如何工作的理解。你的初始化器应该是'var result = [];'(注意,不是'[[]]'),因为你用随后的代码填充外部数组。 –

回答

0

好吧,猜我解决了它。它发生是因为ax [i]它是一个字符串,因此ax [i] + j是无效的。我所做的只是parseInt(ax [i])+ j。这种方式矩阵是多核心填充。

0

在某些时候,r[ax[i]+j][ay[i]]是不确定的,可能是因为ax[i] + j是大于其长度,你可以不分配一个值的未定义对象。

相关问题