Javascript 从多维数组JS上的while循环获取未捕获的TypeError
我正在创建一个多维数组,并将数组的特定部分添加到变量中。数学是正确的,每次都有效,但每次我都会得到一个未捕获类型的错误。具体来说就是这样Javascript 从多维数组JS上的while循环获取未捕获的TypeError,javascript,jquery,Javascript,Jquery,我正在创建一个多维数组,并将数组的特定部分添加到变量中。数学是正确的,每次都有效,但每次我都会得到一个未捕获类型的错误。具体来说就是这样 Uncaught TypeError: Cannot read property '2' of undefined 这是它正在发生的while循环 while (i <= theAgents[agentNumber].length) { var comm = theAgents[agentNumber][i][2];
Uncaught TypeError: Cannot read property '2' of undefined
这是它正在发生的while循环
while (i <= theAgents[agentNumber].length) {
var comm = theAgents[agentNumber][i][2];
commTotals += comm;
console.log(commTotals);
$(this).parent().find("#productionTotals").text(commTotals);
i++
};
当(i关闭一个错误时,索引从零开始
while (i <= theAgents[agentNumber].length) {
^^^^
当(i关闭一个错误时,索引从零开始
while (i <= theAgents[agentNumber].length) {
^^^^
while(i检查是否有代理[代理编号]
,然后检查是否有代理[代理编号][i]
然后获取代理[代理编号][i][2]
的值或将命令设置为0
while (i <= theAgents[agentNumber].length) {
var comm = (theAgents[agentNumber] && theAgents[agentNumber][i] && theAgents[agentNumber][i][2]) || 0;
commTotals += comm;
console.log(commTotals);
$(this).parent().find("#productionTotals").text(commTotals);
i++
};
while(i检查是否有代理[代理编号]
,然后检查是否有代理[代理编号][i]
然后获取代理[代理编号][i][2]
的值或将命令设置为0
while (i <= theAgents[agentNumber].length) {
var comm = (theAgents[agentNumber] && theAgents[agentNumber][i] && theAgents[agentNumber][i][2]) || 0;
commTotals += comm;
console.log(commTotals);
$(this).parent().find("#productionTotals").text(commTotals);
i++
};
while(iwhile(i
我应该小于长度,因为它以0开头。while(iwhile (i <= theAgents[agentNumber].length) // should be < and not <=
var comm=代理人[代理人编号][i][2];
commTotals+=comm;
控制台日志(commTotals);
$(this).parent().find(#productionTotals”).text(commTotals);
我++
};
我应该小于0开头的长度。你能解释一下代码的“(theAgents[agentNumber]&&theAgents[agentNumber][i]&&theAgents[agentNumber][i][2])| | 0);”部分吗。我不太确定这是做什么的,或者它的用途是什么。谢谢!例如,你有嵌套的对象var a={b:{c:'d'}
-尝试访问键c
-console.log(a.b.c)
-但是如果b
不可用会发生什么?TypeError:无法读取未定义的属性“d”-如何防止?您可以检查每个值是否可用-if(a){if(a.b.c){console.log('hooray')}
。谁想写这段代码?开发人员很懒。根据我的第一条评论,Operator&&的工作方式与nesteds相同,如果.Operator | | |返回第二个参数,如果它们都是虚假的价值创造-感谢你的洞察力,我很感激。我会在将来记住这一点!你能解释一下吗&&theAgents[agentNumber][i]&&theAgents[agentNumber][i][2])| | 0);'部分。我不确定这是做什么或它的目的是什么。谢谢!例如,您有嵌套对象var a={b:{c:'d'}
-尝试访问keyc
-console.log(a.b.c)
-但是如果b
不可用会发生什么?类型错误:无法读取未定义的属性“d”-如何防止?您可以检查每个值是否可用-if(a){if(a.b){if(a.b.c){console.log('hooray')}
。谁想写这段代码?开发人员都很懒。根据我的第一条评论,Operator&&的工作方式与nesteds if.Operator | | returs第二个参数的工作方式相同,如果它们都是虚假的值创建-谢谢你的洞察力,我很感激。我会记住这一点,以备将来使用!这就像一个魅力一样。因此,我要明确一点。因为数组的索引从0开始,它将比长度少一个,所以它不能等于长度。我看错了2。这真的让我很反感,但现在它很有意义。谢谢!这很有意思。所以我要说清楚。因为数组的索引从0开始,它将比长度少一个,所以它不能等于长度。我看错了2号。这真的让我很反感,但现在它很有意义。谢谢!
while (i <= theAgents[agentNumber].length) // should be < and not <=
var arr = [1,2,3]
arr.length === 3 // true
arr[3] === undefined // true