1

我正在尝试将一个数组存储在 localStorage (HTML5) 中,该数组需要是一个字符串,但可以通过定义索引来直接访问我存储在数组中的对象。当我尝试 JSON.stringify 时,我只得到 [] ,它不会将对象数组存储在 localStorage 中。

var mylist = [];

mylist["mykey1"] = {id: "1", title: "First"};
mylist["mykey2"] = {id: "2", title: "Second"};

localStorage.setItem("mylist", JSON.stringify(mylist));  // stores [] only - uggh!

var mylist2 = JSON.parse(localStorage.getItem("mylist"));

document.write(JSON.stringify(mylist2["mykey1"])); // want it to display:  {"id": "1", "title": "First"}
4

3 回答 3

1

我想我只是通过将 mylist var 从 [] 数组更改为 {} 对象来解决它。

var mylist = {};
于 2012-08-10T02:03:54.530 回答
1

您已经创建了一个数组,并尝试像关联数组映射一样使用它

实际发生的是当你输入

mylist["mykey1"] = {id: "1", title: "First"}

它试图在索引"mykey1"处获取一个列表元素,该元素被 JSON parser 忽略。这可能是由于它无法确定列表中的整数索引,或者它转换为数字太大。mykey1

你会注意到,如果你这样做:

mylist[1] = {id: "1", title: "First"}

您的 JSON 字符串将为"[null,{id: "1", title: "First"}]",因为您尚未指定0th index元素,但您已设置1st index元素。

于 2012-08-10T02:07:43.037 回答
0

因为您将数组用作普通对象。

更改var mylist = [];var mylist = {};,然后一切正常。

检查演示

于 2012-08-10T02:09:15.580 回答