javascript - 在 LocalStorage 中构建数组

标签 javascript jquery arrays local-storage

我正在尝试根据电子商务网站上的产品查看历史记录在本地存储中构建一个数组。每次用户查看产品页面时,我都想将该页面的 ID 添加到本地存储的数组中。

var itemArray = [];
    var myItem = $("li#ref").data("ref");
    itemArray.push(myItem);
    var LS = {
        set: function (key, val) {
            return localStorage.setItem(key, JSON.stringify(val));
        },
        get: function (key) {
            return JSON.parse(localStorage.getItem(key));
        }
    };
    LS.set("Viewed", itemArray);

我遇到的问题是它永远不会构建一个数组,我看到的最新产品只是覆盖了之前的一个,所以我只得到一个条目。

你知道这是否可以实现吗?

提前致谢

理查德

最佳答案

您需要将新值附加到存储在本地存储中的现有数组,而不是新的空数组:

var LS = {
    set: function (key, val) {
        return localStorage.setItem(key, JSON.stringify(val));
    },
    get: function (key) {
        return JSON.parse(localStorage.getItem(key));
    }
};

var itemArray = LS.get('Viewed') || [];
var myItem = $("li#ref").data("ref");

if (itemArray.indexOf(myItem) !== -1) {
    itemArray.push(myItem);
}

LS.set("Viewed", itemArray);

您可能还应该检查该值是否已在数组中以避免重复。

关于javascript - 在 LocalStorage 中构建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25261670/

相关文章:

javascript - 获取第一个类为xxxxx的元素的 `rel`属性值

jquery - div 总是需要调整 margin-top 属性

javascript - 如何在 Python 中抓取 JS 生成的登录 token ?

javascript - 在 Javascript 中选择单选按钮时清除文本框字段

javascript - 我怎样才能访问倒数第二个 child ?

javascript - 递归循环节点的子节点

c - 这段代码究竟指向哪个数组条目?

javascript - 如何在动态加载的页面中强制从 js 中点击 html 元素

jquery - 如何使用.load和.fadeIn更改DIV内容?

java - java中如何对数组类型的列表进行排序?