我在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值,而不是数组的新元素。
发布于 2020-10-20 11:41:47
// 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
}
不一致的原因
在进行比较时,it is elementId
undefined
inundefined
我试图看到的是……
解释
这就是为什么即使产品已经存在,它也会将一个新值附加到最后一个值之后(因为其他值都是undefined
).,所以只能使用
https://stackoverflow.com/questions/64440686
复制相似问题