2014-02-24 79 views
-2

我正在使用此函數傳遞數組中的每個元素以在if語句中使用它問題是函數總是返回數組的最後一個值請幫助。只返回最後一個數組的項目

function getQtyCheck() 
{ 
    var qty; 
    var id; 
    var checkQty = new Array() 
    if(localStorage.getItem("checkout")!=null || localStorage.getItem("checkout")!=""){ 
     checkQty = JSON.parse(localStorage.getItem("checkout")); 
     for(var t =0; checkQty.length >t; t++){ 
     id = checkQty[t]; 
     t++; 
     qty = checkQty[t]; 

     }//end for loop 
     return {ids:id,qtys:qty} 
    }//end checkout 

} 

然後在腳本的另一部分我是個使用這些變量這樣

var result = getQtyCheck(); 
    var id = result.ids; 
    var qty = result.qtys; 
    if(this.id == id){ 
var tqty = this.quantity-qty; 
+0

您想要返回哪個項目?目前,當你的循環最後一次迭代時,'id'和'qty'將包含數組中最後一個元素的值。 – War10ck

+0

我想重新排列數組中的每個項目 –

+0

不知道該怎麼做才能請你編輯我的代碼] –

回答

1

每次循環迭代,分配idqty到當前迭代的項。一旦循環結束,您將返回一個對象,並將LAST迭代項設置爲您的變量。由於您的return緊接在循環之後並使用循環內設置的變量,因此您將始終獲取最後一個值。

1

它每次都會返回最後一個,因爲您正在循環它並將其添加到循環中,但是在循環外部使用return,這隻會得到最後一個循環。

您不應該在for循環中使用return,因爲它會嘗試返回多次。你可以做的是push它到array然後在最後得到它。

+0

仍然不工作,如果我把變量聲明id爲lopp並在lopp後返回 –

+0

你不應該在for循環中返回'因爲它會嘗試返回多次。你可以做的是把它推到一個數組,然後在最後得到它。 @MichaelSultana – Albzi

+0

不知道該怎麼做纔可以請我看看? –

2

我想我正在關注你現在想做的事情。你想返回數組中的每個元素作爲對象數組嗎?

function getQtyCheck() { 
    var qty, 
     id, 
     checkQty = [], 
     returnValues = []; 
    if(localStorage.getItem("checkout")!=null && localStorage.getItem("checkout")!=""){ 
     checkQty = JSON.parse(localStorage.getItem("checkout")); 
     for(var t =0, len = checkQty.length; len > t; t++){ 
      id = checkQty[t]; 
      t++; 
      qty = checkQty[t]; 
      returnValues.push({ id: id, qty: qty }); 
     } 
     return returnValues; 
    } 

} 

在循環中,構建要返回的對象的數組。循環後,返回新創建的數組。

+1

正在寫這樣的東西,雖然不如我的答案。 +1爲此:) – Albzi

+0

我想重複每個id和qty不是作爲單個變量的數組 –

相關問題