Имам два масива от продукти, наречени количка и склад. Да кажем, че има 5 продукта от а до д.
Запасът може да изглежда
stock[a] = 5, stock[b] = 5...
и т.н.
може да изглежда така
cart[a] = 2, cart[b] = 0...
Опитвам се да направя нещо подобно
for (var product in cart){
if(cart[product] > 0){
cart[product] = stock[product]
}
Но запасът [продукт] винаги връща 0. Как мога да го направя така, че да мога да използвам същия променлив продукт за достъп до продуктите както в склада, така и в количката?
Опитах нещо подобно
for (var product in cart && var product in stock)
но не работи.
Има ли друга алтернатива?
Отговори:
0 за отговор № 1Не е ясно дали се повтаряте в масив или обект, но тъй като вашият въпрос казва масив, ще приемам и двете cart
и stock
са масиви и a
и b
са числа.
Както спомена Крис Л, най-вероятно не трябва да използвате a for..in
цикъл за масиви, така че бих препоръчал само нормално for
контур.
for (var i = 0; i < cart.length; i++) {
if (cart[i] > 0) {
cart[i] = stock[i];
}
}
Ако се насочите към IE9 +, a forEach
по мое мнение е малко по-чист.
cart.forEach(function (item, index) {
if (item > 0) {
cart[index] = stock[index];
}
}
Странична бележка: този код прилича на преназначаване cart[i]
ако е по-голямо от 0, което ми се струва много странно ...