2017-07-29 81 views
1

我keepy得到類型錯誤:testsession.testset [0] .athletes是未定義 - 我已經嘗試許多不同的方式,是它不可能有對象的數組的數組JavaScript的嵌套陣列

var testsession = {}; 
 
var testsetname = {}; 
 
var testset = []; 
 
testsession.testsetname = testsetname; 
 
testsession.testsetname = "week9"; 
 
testsession.testset = testset; 
 
testsession.testset.push("400M"); 
 
testsession.testset.push("800M"); 
 

 
var athletes = []; 
 
var Time = "49.2"; 
 
var AthleteID = "a92"; 
 
var athlete = { "AthleteID": AthleteID, "Time": Time}; 
 
//console.log(pointer); 
 
testsession.testset[0].athletes = athletes; 
 
testsession.testset[0].athletes.push(athlete) 
 
console.log(testsession.testset[0].athletes[0]);

回答

1

testset [0]是一個字符串。使其成爲一個對象

var testsession = {}; 
var testsetname = {}; 
var testset = []; 
testsession.testsetname = testsetname; 
testsession.testsetname = "week9"; 
testsession.testset = testset; 

//Earlier you pushed 400m directly which is a string hence causing the error later on 
testsession.testset.push({distance: "400M"}); 
testsession.testset.push({distance: "800M"}); 

var athletes = []; 
var Time = "49.2"; 
var AthleteID = "a92"; 
var athlete = { "AthleteID": AthleteID, "Time": Time}; 
//console.log(pointer); 
testsession.testset[0].athletes = athletes; 
testsession.testset[0].athletes.push(athlete) 
console.log(testsession.testset[0].athletes[0]); 
1

當您嘗試訪問testsession.testset[0]該條目是一個字符串。在訪問其成員之前,您可能至少要設置testsession.testset[0] = {};

1

testsession.testset[0]是一個原始值,一個字符串。

下面的語句,因此不會造成你可能會認爲它具有這樣的效果:

testsession.testset[0].athletes = athletes; 

這裏會發生什麼?左側的圖元沒有athletes屬性,但JavaScript會將其強制爲String對象,然後將該屬性分配給該臨時對象,然後該對象消失並遺忘。

所以它就像是從未發生過任務:testsession.testset[0]將保持原始值,原始值沒有任何屬性。

當你閱讀athletes屬性,同樣會再次發生:JavaScript的它強制轉換爲String對象,才發現對象有沒有athletes屬性,讓您得到undefined

0

我認爲你是這樣工作的代碼。

<script > 

var testsession = {}; 
testsession.testset = []; 
testsession.testset.push({testsetname:"week9"}); 
testsession.testset[0].list = []; 

testsession.testset[0].list.push({distance:"400M"}); 
testsession.testset[0].list[0].athletes = []; 
testsession.testset[0].list[0].athletes.push({ AthleteID: "a92", Time: "49.2"}); 

testsession.testset[0].list.push({distance:"900M"}); 
testsession.testset[0].list[1].athletes = []; 
testsession.testset[0].list[1].athletes.push({ AthleteID: "a93", Time: "99.2"}); 

console.log(testsession); 

</script> 

和結果將是這樣的:

"{"testset":[{"testsetname":"week9","list":[{"distance":"400M","athletes":[{"AthleteID":"a92","Time":"49.2"}]},{"distance":"900M","athletes":[{"AthleteID":"a93","Time":"99.2"}]}]}]}" 

enter image description here