2013-11-27 2 views
0

я получил этот код, чтобы перечислить все сохраненные игрок в игре:JavaScript: доступ к Object [Объект] из локального хранилища в html5

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

я получаю объект [объект], который представляет собой совокупность объектов , В консоли я вижу их свойства и значения, однако с:

Я до сих пор не могу получить доступ к этим объектам. Есть ли способ получить каждый объект в отдельную переменную, чтобы я мог получить к ним доступ через синтаксис varName.property?

+0

Вызов вашей переменной 'object', вероятно, не самая лучшая идея. –

+0

Это не имеет значения - при получении [object Object] при изменении имени var. – 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 (новый Player (playerName))), и вам не понадобится этот дополнительный индекс, чтобы выкапывать реальные данные из этих вложенных массивов. – VitaliyG

0

Если ваша проблема заключается в том, что вы получаете [object Object] в вашем alert() коробке:

alert(someObject) звонки родным Object.toString() метод передачи аргумента, поэтому вы получаете [object Object].

Используйте JSON.stringify(someObject), чтобы просто преобразовать свой объект в строку JSON или реализовать собственный метод для генерации строки из объекта.

+0

Я использую тот же метод для сохранения объекта в локальном хранилище, например: localStorage.setItem («savedData» + i, JSON.stringify ([new Player (playerName)])); Я считал, что разбор с Джоном делает наоборот. Использование stringify отображает объект в порядке, но я до сих пор не могу получить доступ к его значениям через синтаксис точек. Есть ли способ сделать это? – user841760

Смежные вопросы