2017-05-29 105 views
1

我想使用数组来获得特定的结果,但我得到的错误无法读取未定义的的属性,但当我控制台登录相同的属性我得到我的结果在这里是我的代码:无法读取未定义错误的属性

for (var j=0;j<$scope.ftListe.length;j++){ 
    if(task[j].projet_id==id){ 
     if(temp!=task[j].NomTache) 
      temptache.push(task[j]); 
     tempcol.push(lecollaborateur[j]); 
    } 
    temp=task[j].NomTache; 
} 
$scope.temptache=temptache; 
$scope.tempcol=tempcol; 

for(var i=0; i<temptache.length;i++){ 
    for (var k=0;k<$scope.ftListe.length;i++){ 
     console.log("l'id de la tache: "+temptache[i].IdTache); 
     if(temptache[i].IdTache==$scope.ftListe[k].tacheid){ 
      temps = temps+$scope.ftListe[k].TempsPasse; 
      passe= passe+$scope.ftListe[k].TempsPasse * lecollaborateur[k].CoutParJour; 
     } 
    } 
    tempsAr.push(temps); 
    passeAr.push(passe); 
    temps=0; passe=0; 
} 

从我得到的错误的性质是IdTache,我究竟做错了什么?

+0

控制台temptache并检查是否有IdTache? –

+0

@Dinesh当我控制台temptache [我] .IdTache我得到的结果没有问题 – Jihane

+0

如果你真的想要帮助,你应该提供给我们一个Plunkr或JSFiddle,所以我们可以调试,因为我们不能这样帮忙。 – SjaakvBrabant

回答

2

请看看下面几行:

for(var i=0; i<temptache.length;i++){ 
    for (var k=0;k<$scope.ftListe.length;i++){ 

注意的是,在内部for循环,你递增i变量(i++),而不是k。所以这使得i在内部循环中增加到越界偏移量。你的脚本进入一个无限循环 - 所以当你说“当我控制台登录相同的属性,我得到了我的结果”它实际上显示的结果,直到你'重新在temptache阵列的有效范围内。

你应该修复它:

for(var i=0; i<temptache.length;i++){ 
    for (var k=0;k<$scope.ftListe.length;k++){ 
+3

星期一可以很粗糙...... ;-) – Matheno

+1

@AlonEitan,我完全错过了,谢谢大家 – Jihane

相关问题