点击收藏,如何向localStorage上的数组push数据

新手上路,请多包涵

问题描述

1.点击收藏时候把当前商品缓存到本地,后台已经把商品数据放在了头部,我直接调用就行了。

我点击不同商品四次,没用追加到数组中,请问代码中怎么把后面点击的商品 追加到同一个数组中

clipboard.png

        Wishlist:function () {


            var array = [];
            let adrObj = {
                'id': misslove.product.info.id,
                'name':misslove.product.info.name,
                'image':misslove.product.info.image,
                'href':misslove.product.info.href,
            };
            array[0]= adrObj;

            store.set(misslove.product.info.id,array); // 存储对象 - 自动调用 JSON.stringify

//

            var user = store.get(misslove.product.info.id,array); // 获取存储的对象 - 自动执行 JSON.parse

            console.log(user);
            store.forEach(function(key, array) {
                console.log( array)
            })  // 遍历所有存储


        },
阅读 2.1k
1 个回答

试试这个(代码好长) :

/*
存储localstorage时候最好是封装一个自己的键值,在这个值里存储自己的内容对象,封装一个方法针对自己对象进行操作。避免冲突也会在开发中更方便。
*/
var mystorage = (function mystorage(){
    var ms = "mystorage";
    var storage=window.localStorage;
    if(!window.localStorage){
        alert("浏览器支持localstorage");
        return false;
    }

    var set = function(key,value){
        //存储
        var mydata = storage.getItem(ms);
        if(!mydata){
            this.init();
            mydata = storage.getItem(ms);
        }
        mydata = JSON.parse(mydata);
        mydata.data[key] = value;
        storage.setItem(ms,JSON.stringify(mydata));
        return mydata.data;

    };

    var get = function(key){
        //读取
        var mydata = storage.getItem(ms);
        if(!mydata){
            return false;
        }
        mydata = JSON.parse(mydata);

        return mydata.data[key];
    };

    var remove = function(key){
        //读取
        var mydata = storage.getItem(ms);
        if(!mydata){
            return false;
        }

        mydata = JSON.parse(mydata);
        delete mydata.data[key];
        storage.setItem(ms,JSON.stringify(mydata));
        return mydata.data;
    };

    var clear = function(){
        //清除对象
        storage.removeItem(ms);
    };

    var init = function(){
        storage.setItem(ms,'{"data":{}}');
    };

    return {
        set : set,
        get : get,
        remove : remove,
        init : init,
        clear : clear
    };



})();

mystorage.set('d', [1,[2,3]]);
mystorage.get('d'); // [1,[2,3]]


--------------------- 
作者:过8客 
来源:CSDN 
原文:https://blog.csdn.net/guo8ke/article/details/70846743 
版权声明:本文为博主原创文章,转载请附上博文链接!

思路就是使用 mystorage 方法, 对数组进行读取, 操作 ;

操作完毕(push新的数据)后再重新执行 mystorage.set 方法(覆盖一下就好) ;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题