js對象跟數組多層嵌套,檢測沒有此數據就添加有則不添加以及超過限制條件刪除操做

例如你須要這樣格式的數據:小程序

  

[{"name":"合肥市","arrey":[{"lat":"31.862323","long":"117.289267","name":"G+競技網咖","address":"宿州路60號太陽城B1層"},{"lat":"31.876318","long":"117.349632","name":"H&M(瑤海萬達廣場店)","address":"臨泉東路與和縣路交叉口瑤海萬達廣場1層"},{"lat":"31.790946","long":"117.207581","name":"N(港澳廣場)","address":"翡翠路與芙蓉路交口往北50米處港澳廣場F1層"},{"lat":"31.883742","long":"117.280290","name":"U家魚店","address":"蒙城路與義井路交叉口"},{"lat":"31.863728","long":"117.289816","name":"L‘OREAL(百大鼓樓名品中心店)","address":"宿州路96號百大鼓樓名品中心金座1層"},{"lat":"31.865195","long":"117.292521","name":"T.G","address":"宿州路老太陽城三樓55號"},{"lat":"31.864289","long":"117.294944","name":"e(合肥百盛)","address":"淮河中路77號合肥百盛F1層"},{"lat":"31.864579","long":"117.293090","name":"W.(海亞大世界)","address":"北含山路與淮河路步行街交叉口東北100米海亞大世界F3層N13"},{"lat":"31.610835","long":"117.883709","name":"s·deer","address":"東塘路巢湖萬達廣場1層"},{"lat":"31.704786","long":"117.301498","name":"寶文MALL","address":"南寧路與廬州大道交叉口西南150米"},{"lat":"31.804920","long":"117.223823","name":"置地廣場D座","address":"天鵝湖南岸(綠軸西側)"}]},{"name":"無爲縣","arrey":[{"lat":"31.290454","long":"117.931186","name":"東方家園B區","address":"軍二路與渡江路交匯處"},{"lat":"31.450142","long":"117.895212","name":"橫山","address":"無爲縣"}]},{"name":"安慶市","arrey":[{"lat":"30.530881","long":"117.069820","name":"文采花園F座","address":"旺園路南100米"}]}]
View Code

先從緩存中獲取數據,判斷當前數據是否在你獲取的數據裏面沒有的話就添加進去,有的話就不添加,超過10個的話就刪除數組

實現:緩存

var obj = {
        name: ‘合肥’,
        arrey: [{
          lat: ‘31.82057’,
          long: ‘117.227308’,
          name: ‘合肥汽車站’,
          address: ‘合肥汽車站餐館’
        }]
      }//點擊的當前

wx.getStorage({
        key: "bigKSarr",
        success(res) {
          console.log(res.data)

          var bigKSarr = [];//命名大的數組

          bigKSarr = res.data;

          //判斷有沒有當前城市
          let nameInside = bigKSarr.some(function (e) {
            return JSON.stringify(e.name) === JSON.stringify(obj.name);
          })
          if (!nameInside) {
            //沒有就添加進去
            bigKSarr.push(obj)
          }

          bigKSarr.forEach(function (el, i) {

            if (el.name == obj.name) {
              //同一個城市
              let inside = el.arrey.some(function (item) {
                return JSON.stringify(item) === JSON.stringify(obj.arrey[0]);
              })
              if (!inside) {
                ////判斷是否包含在某個城市的下列裏面沒有則push進去有的話就不push
                el.arrey.push(obj.arrey[0]);
              }
            }
            //若是數組超過10個就刪除第一個
            if (el.arrey.length > 10) {
              el.arrey.splice(0,1)
            }
          })
          wx.setStorage({
            key: "bigKSarr",
            data: bigKSarr
          })

        },
        fail(res) {
          //第一次獲取緩存失敗
          console.log(res)

          var bigKSarr = [];//命名大的數組
          var ksli = {
            lat: e.currentTarget.dataset.latlog.split(",")[1],
            long: e.currentTarget.dataset.latlog.split(",")[0],
            name: e.currentTarget.dataset.name,
            address: e.currentTarget.dataset.address
          }//命名城市對應數組得單個對象
          var ksliArr = [];
          ksliArr.push(ksli)
          var ksli = {
            "name": appInstance.globalData.defaultCounty,
            "arrey": ksliArr
          }//這個是名字對應數組得li
          bigKSarr.push(ksli)
          wx.setStorage({
            key: "bigKSarr",
            data: bigKSarr
          })
        }

      })
View Code

這個功能是在小程序緩存所須要的,因此上述代碼用了,小程序獲取小程序緩存的方法app

相關文章
相關標籤/搜索