控制台说我的数组是未定义的javascript

时间:2013-06-13 08:30:04

标签: javascript arrays json parsing local-storage

我看了很多例子,我似乎无法弄清楚我在做错了什么:

 var names_Array = [];
 var names_List = new WinJS.Binding.List(names_Array);
 names_List.push({ name: "Joe Dowling", image: "image/Joe Dowling.png", ClientID: "1234" });

window.localStorage.setItem('names_Array', JSON.stringify(names_Array));

var test = JSON.parse(window.localStorage.getItem('names_Array'));
console.log(test.name);

我在控制台中未定义,为什么会这样?

2 个答案:

答案 0 :(得分:1)

你有两个错误:

1)您刚刚初始化了names_Array并且没有添加任何元素。您将该空数组存储在localStorage中。

2)由于test是一个对象数组(如果要将对象推入其中),则必须通过索引访问一个特定对象,或者循环遍历数组以获取成员。

此代码应该有效:

var names_Array = [];
var names_List = new WinJS.Binding.List(names_Array);
names_List.push({ name: "Joe Dowling", image: "image/Joe Dowling.png", ClientID: "1234" });

window.localStorage.setItem('names_Array', JSON.stringify(names_List));

var test = JSON.parse(window.localStorage.getItem('names_Array'));

for( i in test ) console.log(test[i].name);

答案 1 :(得分:0)

window.localStorage.setItem(
    'names_Array',
    JSON.stringify(['John Doe', 'Jane Doe'])
);
console.log(JSON.parse(window.localStorage.getItem('names_Array')));

打印

["John Doe", "Jane Doe"]

也许test.name阻碍了?