Javascript 按标签输入值递增数组元素
我有一个JavaScript代码,希望通过添加来自用户的标签输入来增加项目的值。我创建了一个输入标签和按钮来推送值。我有一个由五个具有唯一Id的项目组成的数组。问题是,当我从用户输入函数添加值时,无法推送和合并现有值,而不是创建数组的新部分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
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文件中找到的代码。