2015-11-15 72 views
-1

我有一個稱爲cart和stock的兩個數組產品。 假設有5個產品a到e。替代爲(var x在數組中)

股票可能看起來像

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

「但是股票[產品]總是返回0」 - 你怎麼樣確定這個? – Ryan

+1

你可以發佈更多的代碼嗎?你已經可以在'stock'和'cart'中使用'product'作爲關鍵字,所以你必須有另一個問題。你有沒有試過'stock'和'cart'上的'console.log'來看看它們是否包含你認爲他們做的事情? – Macmee

+0

http://stackoverflow.com/questions/500504/why-is-using-for-in-with-array-iteration-such-a-bad-idea –

回答

0

目前還不清楚是否或不是你遍歷數組或對象,但因爲你的問題說,陣,我將承擔兩個cartstock是數組和ab是數字。

正如克里斯L提到的,你可能不應該使用for..in循環的數組,所以我會建議只是一個正常的for循環。

for (var i = 0; i < cart.length; i++) { 
    if (cart[i] > 0) { 
    cart[i] = stock[i]; 
    } 
} 

如果你的目標IE9 +,一個forEach是乾淨了一點,在我看來。

cart.forEach(function (item, index) { 
    if (item > 0) { 
    cart[index] = stock[index]; 
    } 
} 

邊注:此代碼看起來像它的重新分配cart[i]如果是大於0,這似乎很奇怪,我...