Так что я новичок в JS и работаю над проектом для получения продуктов на основе информации отслеживания, а затем с помощью кода UPC, я получаю содержимое пакета из AJAX-вызова php, затем добавляю элементы в массив в js формат объекта, когда UPC сканируется из элемента в пакете, он должен вычесть один из содержимого пакета, проблема, которую функция, которую я сделал для вычитания, работает только на некоторых объектах элемента, а не на всех, и я не могу понять, почему, нет различий между объектами, что я делаю не так
вот мой код
//define array
`var packageContent = [];
//create item objects
var Item = function(name, upc, weight, qty) {
this.name = name
this.upc = upc
this.weight = weight
this.qty = qty
}
//with php info add items with the tracking to the package content
function addItemToPackage(name, upc, weight, qty) {
for (var i in packageContent) {
if (packageContent[i].upc == upc) {
packageContent[i].qty += qty;
return;
}
}
item = new Item(name, upc, weight, qty);
packageContent.push(item);
}`
//Package Content Lookup
function initialInboundScan(tracking) {
//define tracking var
var tracking = tracking;
//AJAX request to PHP to find items assosiated with tracking #
$.ajax({
url : "./includes/process.php",
method : "post",
data : {inbound_tracking_scan:1,tracking:tracking},
success : function(data)
{
var items = JSON.parse(data);
//Loop the respone call addItemToPackage()
for(var i in items){
addItemToPackage(items[i].product_name, items[i].UPC, items[i].SKU, parseInt(items[i].qty))
}
return packageContent;
}
});
}
// remove item from package
function remove(upc) {
var upc = upc;
for (var i in packageContent) {
if (packageContent[i].upc == upc) {
packageContent[i].qty --;
if (packageContent[i].qty == 0) {
packageContent.splice(i , 1);
}
}
}
}
функция remove () не будет работать с элементами, созданными с помощью initialInboundScan (); только элементы, созданные напрямую с помощью addItemToPackage (), и я не могу понять, почему функция remove () не вычитает из qty