2017-05-16 7 views
-1
function reworkInfoData(jsonData){ 
var userData = []; 
userData[0] = { 
    date: ' ', 
    data: [] 
}; 
userData[0].data[0] = { 
    activity: ' ', 
    time: ' ' 
} 
var timeVar = new Date(); 
for(var i = 0; i < jsonData.length; i++){ 
    timeVar = new Date(jsonData[i].date); 
    userData[i].date = timeVar.getFullYear() + '.' + timeVar.getMonth() + 
    '.' + timeVar.getDay(); 
    for(var k = 0; k < jsonData[i].data.length; k++){ 
     userData[i].data[k] = jsonData[i].data[k]; 
    } 
} 
return UserData;} 

나는 node.js를 배우고 있으며, studiyng 목적을 위해 express와 ejs를 사용하는 스터디 로거와 같은 것을 작성하려고합니다. 이 코드 블록은 JSON 날짜 문자열을보기 쉬운 문자열로 재 작성하는 데 사용되었습니다. 그리고 난 오류를복잡한 자바 스크립트 개체 작성 및 다시 쓰기 문제. 정의되지 않은 오류 집합

형식 오류가 계속 :

userData[i].date = ... 
+1

'jsonData'의 값은 무엇입니까? 배열의 항목 중 하나가 'null'또는 'undefined'라고 의심됩니다. – styfle

+3

jsonData를 반복하지만 userData에 할당하려고합니다. userData에는 처음에 추가 한 요소 하나만 있습니다. – ste2425

+0

@styfle 필자는 JSON.parse (fileContent)에서 jsonData 값을 가져 오므로 empy 또는 undefined가 될 수 없습니다. –

답변

0

귀하의 userData에 배열에서 정의되지 않은 의 재산 '일'을 설정할 수 없습니다 처음에 단 하나의 목적을 가지고, 당신의 jsonData 길이가 하나 이상보다가, 그래서 만약 당신이 userData에 [1] 정도에

을 정의되지 않은

는 것들 잘못된/잘못된 연습 방법이

function reworkInfoData(jsonData){ 
    var userData = []; 
    userData[0] = { 
     date: ' ', 
     data: [] 
    }; 
    userData[0].data[0] = { 
     activity: ' ', 
     time: ' ' 
    } 
    var timeVar = new Date(); 
    for(var i = 0; i < jsonData.length; i++){ 
     timeVar = new Date(jsonData[i].date); 
     if(userData[i]) { 
     userData[i].date = timeVar.getFullYear() + '.' + timeVar.getMonth() + 
     '.' + timeVar.getDay(); 
     for(var k = 0; k < jsonData[i].data.length; k++){ 
      if(userData[i].data[k]) { 
       userData[i].data[k] = jsonData[i].data[k]; 
      }else { 
       userData[i].data.push(jsonData[i].data[k]) 
      } 
     } 
     } else { 
     var tmp = {}; 
     tmp.date = timeVar.getFullYear() + '.' + timeVar.getMonth() + 
     '.' + timeVar.getDay(); 
     for(var k = 0; k < jsonData[i].data.length; k++){ 
      tmp[i].data.push(jsonData[i].data[k]); 
     } 
     } 
    } 
    return UserData; 
} 
1

부지를 시도하기 때문에이 오류가 발생합니다 너는 이것을했다. 아래의 코드
1.Instead :

var userData = []; 
userData[0] = { 
    date: ' ', 
    data: [] 
}; 

시도 :

var userData = []; 
userData.push({ 
    date: ' ', 
    data: [] 
}); 

2.You는에 jsonData 값 확인됩니다 for(var i = 0; i < jsonData.length; i++)하지만 반복자와 userData에 액세스 할 수 있습니다. userData[i].dateuserData.lengthjsonData.length보다 작 으면 실패합니다. 논리를 수정하여이를 수정하십시오.