在Chrome扩展程序中存储阵列

时间:2011-12-19 17:57:06

标签: javascript json google-chrome local-storage

我目前正在制作Chrome扩展程序,我正处于最后阶段,存储用户首选项 我知道本地存储将存储字符串,在这个阶段我只是使用字符串,但随着存储要求变大,需要一个2维数组。我已经看到本地存储无法存储数组,但您可以使用JSON。我从未使用过JSON,在查看示例时,我不明白该怎么做。

for (i=1;i<=localStorage["totalwebsites"];i++) {
        // Get the title of the current item
        var title = localStorage["websitetitle" + i];
        // Create the new context menu item, and get its menuItemId to store in the right localStorage string
        var menuItemId = chrome.contextMenus.create({parentId: ParentID, title: title, contexts:["selection"], onclick: searchFromContext});
        // Store the created menu items menuItemId in the array so we know which item was chosen later on
        websitesarray[menuItemId] = localStorage["websiteurl" + i];
    }

正如您所看到的,当使用字符串时,这会变得非常混乱。我希望totalwebsites成为数组中项目的计数,websitetitle和websiteurl将在2维数组中。
我不知道你将如何在JSON中执行此操作,或者至少如何将其永久存储在Chrome中。我猜你必须在某些时候将它转换回Local Storage Strings吗?我不认为我得到这个 任何帮助/指针都会非常感激,我找不到多少:(

1 个答案:

答案 0 :(得分:4)

别担心,JSON非常简单!假设您的网站存储在websitesarray

// To load:
websitesarray = JSON.parse(localstorage.websites);

// To store:
localstorage.websites = JSON.stringify(websitesarray);

确保你有一个理智的方法来处理尚未设置localstorage.websites的情况,因为JSON.parse如果输入为空则会抛出拟合。