美文网首页
点击加入购物车如何将数据存储到localStorage里面去

点击加入购物车如何将数据存储到localStorage里面去

作者: 悟空你又瘦了 | 来源:发表于2017-07-19 18:43 被阅读0次
    • 核心内容
    • shopcar.js
    // 负责操作localStorage
    // 定义localStorage的可以为一个常量
    const KEY ='shopcar';
    function getJsonObject(){
        var lsSting = localStorage.getItem(KEY);
        var list = [];
        if(lsSting){
            list = JSON.parse(lsSting);
        }
        return list;
    }
    // obj格式:{goodsid:87,count:1}
    export function setItem(obj){
        // 1.0 根据key获取localStorage中的已有数据
        var list = getJsonObject();
        // 2.0 将obj 追加到list中
        list.push(obj);
        // 3.0 将list数据转出json字符串存储到localStorage中
        localStorage.setItem(KEY,JSON.stringify(list))
    }
    // 获取所有的商品的购买总数
    export function getTotalCount(){
        var list = getJsonObject();
        // 2.0 计算总数
        var totalcount = 0;
        list.forEach(function(item){
            totalcount+=item.count;
        })
        return totalcount;
    }
    // 获取所有商品的id
    // 返回的格式: googdsid,goodsid
    export function getIdString(){
        var list = [];
        var obj = getGoodsObj();
        for(let key in obj){
            list.push(key);
        }
        return list.join(',');
    }
    // tmpObj={87:1,90:2};
    export function getGoodsObj(){
        var tmpObj={};
        var list =getJsonObject();
        // 2.0 遍历list 将goodsid的值push进入到tmplist
        list.forEach(item=>{
            if(tmpObj[item.goodsid]){
                tmpObj[item.goodsid] += item.count;
            }else{
                tmpObj[item.goodsid] = item.count
            }
        });
        return  tmpObj;
    }
    // 根据商品id删除数据
    export function removeGoods(goodsid){
        // 获取数据
        var list = getJsonObject();
        var newList=[];
        // 删除list中对应的goodsid的数据
        list.forEach(item=>{
            if(item.goodsid != goodsid){
                newList.push(item);
            }
        });
        // 写入新数据
        // 3.0 将list数据转出json字符串存储到localStorage中
        localStorage.setItem(KEY,JSON.stringify(newList))   
    }
    // 实现shopnumber.vue组件的自减功能
    export function substrictItem(goodsid){
    // 获取数据
        var list = getJsonObject();
        // 
        // list.forEach((item,index)=>{
        //  if(item.goodsid != goodsid){
        //      //  自减逻辑
        //      if(item.count == 1){
        //          list.splice(index,1) //由于改变了list的数量导致forEach会异常
        //      }
        //  }
        // });
        for(var i = list.length-1;i>=0;i--){
            var tmpobj = list[i];
            if(tmpobj.goodsid == goodsid){
                if(tmpobj.count == 1){
                    list.splice(i,1);
                }else{
                    list[i].count = list[i].count -1;
                }
            }
        }
        // 3.0 将list数据转出json字符串存储到localStorage中
        localStorage.setItem(KEY,JSON.stringify(list))
    } 
    

    相关文章

      网友评论

          本文标题:点击加入购物车如何将数据存储到localStorage里面去

          本文链接:https://www.haomeiwen.com/subject/ttdfkxtx.html