有这样一种场景,需要将Localstorage做业务上的分层Level1、Level2,当Localtrage满的时候,优先清理Level低的数据。

 const Storage = {
        level: deserialize(localStorage.getItem('level')) || [],
        level2: deserialize(localStorage.getItem('level2')) || [],
        // 设置level1中的数据
        setlevel: function (key, val) {
          if (!localStorage.getItem(key)) {
            this.level.push(key)
            localStorage.setItem('level', serialize(this.level))
          }
          localStorage.setItem(key, serialize(val))
        },
        // 得到level1中的数据
        getlevel: function (key) {
          let val = deserialize(localStorage.getItem(key))
          return val
        },
        // 设置level2中的数据
        setlevel2: function (key, val) {
          if (!localStorage.getItem(key)) {
            this.level.push(key)
            localStorage.setItem('level2', serialize(this.level))
          }
          localStorage.setItem(key, serialize(val))
        },
        // 得到level2中的数据
        getlevel2: function (key) {
          let val = deserialize(localStorage.getItem(key))
          return val
        },
        // 删除level1中的数据
        removelevel: function () {
          var level = this.level
          let removeLevel = [...new Set(level)].map((item) => {
            localStorage.removeItem(item)
          })
          localStorage.setItem('level', serialize([]))
          this.level = []
        },
        // 删除level2中的数据
        removelevel2: function () {
          var level = this.level
          let removeLevel2 = [...new Set(level)].map((item) => {
            localStorage.removeItem(item)
          })
          localStorage.setItem('level2', serialize([]))
          this.level2 = []
        },
      }

      // 转成JSON字符串
      function serialize(val) {
        return JSON.stringify(val)
      }

      // 转成初始类型
      function deserialize(val) {
        if (typeof val !== 'string') {
          return undefined
        }
        try {
          return JSON.parse(val)
        } catch (e) {
          return val || undefined
        }
      }

  

posted @ 2021-10-18 23:05  麻花的野望  阅读(47)  评论(0)    收藏  举报