前文:
今天踩了一下午的坑,但是確實(shí)很簡(jiǎn)單的問題。
我說一下需求:掃描商品的二維碼,從而判斷,同一個(gè)二維碼不可多次掃描;
點(diǎn)擊掃一掃 會(huì)在灰色區(qū)域展示 掃描的商品信息,比如商品名稱,商品碼等,但是我們的需求是一物一碼,即使是同一個(gè)商品也是不同的商品碼。
錯(cuò)誤示例:
最開始我的想法是做判斷,因?yàn)槲視?huì)在相對(duì)應(yīng)的js文件中定義一個(gè) productList:[ ],數(shù)組來存放數(shù)據(jù),
Pages({
productList: [用來存放,通過后臺(tái)接口得到的相關(guān)商品的數(shù)據(jù)信息]
})
由于我們是一物一碼,那唯一的判斷條件就是商品碼了
-
wzy.post("/wx/open/getProdcutNameByCode", product, true)
-
.then((res) => {
-
-
let products={
-
name: res.data.data,
-
code:product.code,
-
}
-
-
let productLength = this.data.productIist.length;
-
-
-
//如果列表沒有直接推,如果有循環(huán),如果
-
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('提示','同一商品不可重復(fù)掃描')
-
return
-
}
-
}
-
this.data.productIist.push(products);
-
this.setData({
-
productIist: this.data.productIist
-
})
-
}
-
}).catch((res) => {
-
console.log(res)
-
wzy.showPop('提示', '當(dāng)前網(wǎng)絡(luò)繁忙,請(qǐng)重新掃描')
-
})
-
},
原來的思路是:
-
.then((res) => {
-
-
let products={
-
name: res.data.data,
-
code:product.code,
-
}
-
-
let productLength = this.data.productIist.length;
-
-
-
//如果列表沒有直接推,如果有循環(huán),如果
-
if (productLength==0){
-
this.data.productIist.push(products);
-
this.setData({
-
productIist: this.data.productIist
-
})
-
}else{
-
// 原來思路:把數(shù)組中的每一項(xiàng)code取出來與掃碼得到的code進(jìn)行對(duì)比,如果不相等就push到數(shù)組中 從而在頁(yè)面循環(huán),但是發(fā)現(xiàn)
-
// 當(dāng)數(shù)組的length>1的情況下,會(huì)發(fā)生即使你掃碼得到的code不與原數(shù)組相同但是會(huì)重復(fù)多次,次數(shù)由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('提示', '當(dāng)前網(wǎng)絡(luò)繁忙,請(qǐng)重新掃描')
-
})
-
},
所以 在上面的正確的示例中 使用for循環(huán) 并把判斷也寫進(jìn)for循環(huán)中 如果數(shù)組中的code與掃描的code相等 就會(huì)彈出提示框,并且不會(huì)執(zhí)行下面代碼,但是當(dāng)條件不相符的時(shí)候,便可以愉快的執(zhí)行下面的代碼了。
|