2015-01-05 4 views
0

"lene"(테스트 샘플)을 변수 "q"에 푸시하려고합니다. 웬일인지 내 브라우저에서 언급 한 내용입니다.JavaScript undefined는 함수가 아닙니다 (splice 함수 사용)

Javascript highscore.html:24 Uncaught TypeError: undefined is not a function 
Javascript highscore.html:145 Uncaught TypeError: Cannot read property 'length' of undefined 

첫 번째 오류로 인해 145 번째 줄에 오류가 있습니다. 여기에 의견에 24 행을 표시했습니다.

var q = [{ 
    TernRank: 2, 
    TernVan: '03/12/2014', 
    TernTot: '01/01/2015', 
    TernDagen: 1 
}, { 
    TernRank: 3, 
    TernVan: '08/01/2014', 
    TernTot: '01/01/2015', 
    TernDagen: 1 
}, { 
    TernRank: 1, 
    TernVan: '03/12/2014', 
    TernTot: '01/01/2015', 
    TernDagen: 1 
}, { 
    TernRank: 4, 
    TernVan: '03/12/2014', 
    TernTot: '01/01/2015', 
    TernDagen: 1 
}]; 




DAY = 1000 * 60 * 60 * 24 

for (i = 0; i < 4; i++) { 
    d1i = new Date(q[i].TernVan) 
    d2i = new Date(q[i].TernTot) 

    days_passedi = Math.round((d2i.getTime() - d1i.getTime())/DAY) 
    q[i].splice(3, 0, "Lene"); //This is line 24 
}; 

"[i]"를 제거하면 24 행이 작동합니다. 누구나 오류의 원인인지 및/또는 해결 방법을 알고 있습니까?

+4

Q [I]과 동일

q.splice(q.length + 1, 0, 'Lene'); 

를 배열하지 않습니다. 너 뭐하려고? –

+0

'i','DAY','d1i','d2i','days_passed1' 등을 어딘가에 선언 하시겠습니까? 왜냐하면 당신의 코드가 [* The Implicit Globals *]의 공포에 빠지기 때문입니다 (http://blog.niftysnippets.org/2008/03/horror-of-implicit-globals.html). –

답변

0

q은 배열이고 q[i]은 개체입니다.

만 배열은 기본적으로 방법 .splice이에게 : 당신이 q 배열에 '레네'를 추가 을하고자하는 경우 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

는 가장 쉬운 방법은 다음과 같습니다 또는

q.push('Lene'); 

당신이 경우 정말 스플 라이스 작업을 만들고 싶다면, 당신은 이것을 할 수 있습니다 :

q.splice(i, 0, 'Lene'); 

q 배열의 인덱스 i에 'Lene'요소가 추가됩니다. 아니면 이런 식으로 뭔가를 할 수 있습니다 : 기본적으로 q.push

+1

* "글쎄, 문자열도 마찬가지"*. 확실합니까 ? 문자열 불변, 이것은 쓸모가 없을 것입니다 –

+0

그 내 바보 같은 뇌 splinter splice과 슬라이스거야! 편집 됨. – Rajit

관련 문제