2013-11-27 73 views
0

我有了這個代碼,列出所有保存的玩家在一個遊戲:的JavaScript:從訪問本地存儲對象[對象]在HTML5

function getAllPlayers(){ 
for (var i = 0; i <= playerCount; i++){ 
    object[i] = JSON.parse(localStorage.getItem("savedData"+i)); 
    console.log(object[i]); 
    } 
} 

我得到的對象[對象],它是對象的集合。在控制檯中,我可以看到它們的屬性和值,但是:

for (var name in object) { 
    alert('"' + name + '"="' + object[name] + '"'); 
} 

我仍然無法訪問這些屬性。有沒有一種方法可以將每個對象都放入一個單獨的變量中,以便我可以通過varName.property語法訪問它們?

+0

調用你的變量'object'可能不是最好的主意。 –

+0

它沒有什麼區別 - 當更改var名稱時仍然會獲得[object Object]。 – user841760

+0

使用「object」作爲var名稱將起作用。只要你不嘗試使用「對象」...我真的不會推薦它。 – EasyPush

回答

1

問題是因爲object是不是一個真正的對象,這是數組對象,你應該

for (var i = 0; i < object.length; i++) 
    for (var name in object[i]) { 
    alert('"' + name + '"="' + object[i][name] + '"'); 
    } 

//currently you have to read it like this 
for (var i = 0; i < object.length; i++){ 
    var singleObj = object[i][0]; // additional 0 index 
    for (var name in singleObj) { 
    alert('"' + name + '"="' + singleObj[name] + '"'); 
    } 
    } 

像你在這裏用它

console.log(object[i]); 
訪問此數組中的某些對象的屬性
+0

我在尋找某種東西,但它確實輸出「0」=「[object Object]」,而不是實際的屬性。不幸。我也試過eval(),也沒有運氣。 – user841760

+0

你正在枚舉整個數組而不是單個對象,或者你的對象是數組來嘗試添加額外的索引,如'singleObj [0]' – VitaliyG

+1

你正在用'JSON.stringify([new Player(playerName) ]))'只是像'JSON.stringify(new Player(playerName)))'那樣存儲它,並且你不需要這個額外的索引來挖掘出這個嵌套數組中的真實數據 – VitaliyG

0

如果你的問題是,你在你的alert()盒獲得[object Object]:傳遞參數的

alert(someObject)調用本地方法Object.toString(),這就是爲什麼你越來越[object Object]

使用JSON.stringify(someObject)可以簡單地將您的對象轉換爲JSON字符串,或者實現您自己的方法以從對象生成字符串。

+0

我使用相同的方法將對象保存在本地存儲中,例如:localStorage.setItem(「savedData」+ i,JSON.stringify([new Player(playerName)]));我認爲從Json解析是相反的。使用stringify會顯示對象,但我仍然無法通過點語法訪問它的值。有沒有辦法做到這一點? – user841760