Javascript 按标签输入值递增数组元素

Javascript 按标签输入值递增数组元素,javascript,arrays,push,increment,concat,Javascript,Arrays,Push,Increment,Concat,我有一个JavaScript代码,希望通过添加来自用户的标签输入来增加项目的值。我创建了一个输入标签和按钮来推送值。我有一个由五个具有唯一Id的项目组成的数组。问题是,当我从用户输入函数添加值时,无法推送和合并现有值,而不是创建数组的新部分 add.addEventListener('click', function() { let basket = JSON.parse(localStorage.getItem('basket')); // Par

我有一个JavaScript代码,希望通过添加来自用户的标签输入来增加项目的值。我创建了一个输入标签和按钮来推送值。我有一个由五个具有唯一Id的项目组成的数组。问题是,当我从用户输入函数添加值时,无法推送和合并现有值,而不是创建数组的新部分

add.addEventListener('click', function() {
          
          let basket = JSON.parse(localStorage.getItem('basket'));   // Parse data from localstorage
          
          let elementimageUrl = element.imageUrl;                     // element.imageUrl is a part of backend data received from JSON file
          let elementId = element._id;                                // element._id is a part of backend data received from JSON file
          let elementName = element.name;                             // element.name is a part of backend data received from JSON file
          let elementPrice = element.price;                          // element.price is a part of backend data received from JSON file
          let add2 = document.getElementById("userinput").value;     // add2 varriable get value from label
          let yInt = Number.parseInt(add2);                         // parse label value to Integer number
          console.log(yInt);                                        // console log to check number
          let elementQuantity = yInt;                               // assign label value to elementQuantity
          console.log(elementQuantity);

          if (!basket) {
            basket = [];
          }
        
          // find the index of the item if already in basket
          const itemIndexInBasket = basket.findIndex(basketEntry => basketEntry.elementId === elementId);
          if (itemIndexInBasket !== -1) {
            basket[itemIndexInBasket].elementQuantity++;
          } else {
            basket.push({elementId, elementName, elementPrice, elementQuantity, elementimageUrl});    // Push not existing data to localstorage
          } 
          localStorage.setItem('basket', JSON.stringify(basket));
        })
这就是按钮将所有值推送到数组的方式。我希望增加现有的elementQuantity值,而不是数组的新元素

  • 你的代码
//如果项目已经在篮子中,则查找该项目的索引
const itemIndexInBasket=basket.findIndex(basketEntry=>basketEntry.elementId==elementId);
如果(itemIndexInBasket!=-1){
篮子[itemIndexInBasket].elementQuantity++;
}否则{
push({elementId,elementName,elementPrice,elementQuantity,elementimageUrl});//将不存在的数据推送到本地存储
} 
不一致的原因 比较时,您的
elementId
basketEntry.elementId==elementId
中是
未定义的

我试图看到的价值。。。
  • 在代码中编辑

  • 输出

解释
  • 这就是为什么即使产品已经存在,它也会在最后一个值后面追加一个新值(仅
    elementQuantity
    ,因为其他值是
    未定义的

请提供完整代码的最低版本,但仍能正常工作,以便我们对其进行调试。请查看我的GitHub好吗?可以在basket.js文件中找到的代码。