微信小程序之條件判斷


前文:

  今天踩了一下午的坑,但是確實很簡單的問題。

   我說一下需求:掃描商品的二維碼,從而判斷,同一個二維碼不可多次掃描;

   

 

 點擊掃一掃 會在灰色區域展示 掃描的商品信息,比如商品名稱,商品碼等,但是我們的需求是一物一碼,即使是同一個商品也是不同的商品碼。

 錯誤示例:

     最開始我的想法是做判斷,因為我會在相對應的js文件中定義一個 productList:[ ],數組來存放數據,

Pages({
    productList: [用來存放,通過后台接口得到的相關商品的數據信息]
    
})

由於我們是一物一碼,那唯一的判斷條件就是商品碼了

wzy.post("/wx/open/getProdcutNameByCode", product, true)
             .then((res) => {
               
               let products={
                 name: res.data.data,
                 code:product.code,
               }

               let productLength = this.data.productIist.length;

              
              //如果列表沒有直接推,如果有循環,如果
               if (productLength==0){
                 this.data.productIist.push(products);
                 this.setData({
                   productIist: this.data.productIist
                 })
               }else{

                 for (let i = 0; i < productLength;i++){
                   if (products.code == this.data.productIist[i].code){
                      global.jv.showPop('提示','同一商品不可重復掃描')
                      return
                    }
                 }
                 this.data.productIist.push(products);
                 this.setData({
                   productIist: this.data.productIist
                 })
               }
             }).catch((res) => {
               console.log(res)
               wzy.showPop('提示', '當前網絡繁忙,請重新掃描')
             })
         },

原來的思路是:

 

 .then((res) => {
               
               let products={
                 name: res.data.data,
                 code:product.code,
               }

               let productLength = this.data.productIist.length;

              
              //如果列表沒有直接推,如果有循環,如果
               if (productLength==0){
                 this.data.productIist.push(products);
                 this.setData({
                   productIist: this.data.productIist
                 })
               }else{
                 // 原來思路:把數組中的每一項code取出來與掃碼得到的code進行對比,如果不相等就push到數組中 從而在頁面循環,但是發現
 // 當數組的length>1的情況下,會發生即使你掃碼得到的code不與原數組相同但是會重復多次,次數由productIist.length決定
                 
            productIist.forEach(item=>{
                   if(item.code !==this.data.productIist.code ) {
                    this.data.productIist.push(products);
                 this.setData({
                   productIist: this.data.productIist
                 })
        }
    
})
             }).catch((res) => {
               console.log(res)
               wzy.showPop('提示', '當前網絡繁忙,請重新掃描')
             })
         },              

所以 在上面的正確的示例中 使用for循環 並把判斷也寫進for循環中  如果數組中的code與掃描的code相等 就會彈出提示框,並且不會執行下面代碼,但是當條件不相符的時候,便可以愉快的執行下面的代碼了。

文中的wzy封裝的方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM