首页 > 解决方案 > 问题条件 if 和 else if 在 for 循环中添加数组中的对象或数组中的新对象不起作用为什么?

问题描述

我的问题是,在我的 if 和 else if for 循环条件中,如果我们添加表中包含的第二个相同产品,则触发第一个条件,但是当产品的颜色条件和盖子发生变化时,它会触发我两个点击产品的条件。该怎么办 ?

如果输入中选择的 id 和颜色相同,如果对象和已经在表中,我想添加一个数量 ++。否则,您将在表中添加一个新对象。问题是它添加了产品中的数量和对象中的数量之后,这里是我的代码和下面控制台的一些屏幕截图

produitData = 产品页面上的产品选择

produitTableau = 数组保存在 localStorage 中的对象

select = 输入包含清漆值

const addBasket = () => {
  let bouton = document.getElementById(produitData._id);
  bouton.addEventListener("click", () => {
    let produitTableau = JSON.parse(localStorage.getItem("produit"));
    let select = document.getElementById("vernis");

    const fusionProduitTeinte = Object.assign({}, produitData, {
      teinte: `${select.value}`,
      quantite: 1,
    });

    if (produitTableau == null) {
      produitTableau = [];
      produitTableau.push(fusionProduitTeinte);
      localStorage.setItem("produit", JSON.stringify(produitTableau));
    } else {
      for (i = 0; i < produitTableau.length; i++) {
        if (
          produitTableau[i]._id == produitData._id &&
          produitTableau[i].teinte == select.value
        ) {
          produitTableau[i].quantite++;
          console.log("quantite ++");
          localStorage.setItem("produit", JSON.stringify(produitTableau));
        } else {
          console.log("nouveau");
          produitTableau.push(fusionProduitTeinte);
          localStorage.setItem("produit", JSON.stringify(produitTableau));
        }
      }
    }

 

    console.log(select.value);
    console.log(produitTableau);

    // window.location = "panier.html";
  });
  return;
};

单击一个对象添加到数组第二次单击数量++将对象添加到数组它的工作第一个条件 在此处输入图像描述

第三次单击数量++将对象添加到数组中它的工作第一个条件 在此处输入图像描述

四次点击我改变了选择值但产品ID与表中的对象相同数量++将对象添加到数组和新对象同时它不是工作条件并继续在数组中添加新对象不同的值并在无穷大中添加数量++

在此处输入图像描述

对于我的代码功能中的良好条件,解决方案是什么?

标签: javascriptarraysobject

解决方案


推荐阅读