2014-10-29 58 views
0

想象一下,您有一個產品頁面。在這個頁面上有兩個帶有選項的選擇輸入。JavaScript - 動態數組和循環

尺寸和顏色有一個。這可以根據產品而改變,例如窗簾可能有一個大小,長度和顏色(三個選擇菜單)。

陣列是動態創建的(基於各選擇菜單及其選項上):

var dynamicArr = [], 
    i, 
    j, 
    opt, 
    $('.select'); 

for (i = 0; i < select.length; i += 1) { 

    opt = select.eq(i).find('option'); 

    if (dynamicArr[i] === undefined) { 
     dynamicArr[i] = []; 
    } 

    for (j = 0; j < opt.length; j += 1) { 
     dynamicArr[i].push(opt.eq(j)); 
    } 

} 

想象的頁面有一個大小和顏色下拉。以上將創建一個這樣的數組:

dynamicArr = [['size'], ['color']] 

我想通過每個這些單獨循環(以獲得單獨的值和比較它們)。

我的問題從這裏開始。動態數組的長度可能爲1,2,3,4,5,6(取決於頁面上的選擇選項)。因此,我不能做到這一點,因爲不會永遠有兩個選擇

for (i = 0; i < dynamicArr[0].length; i += 1) { 
} 
for (i = 0; i < dynamicArr[1].length; i += 1) { 
} 

我怎麼會去找出長度和單獨循環像上面例如如果有三個選擇,它會自動知道有這麼多,並通過它們像上面一樣循環。

如果您仍然困惑,請告訴我。

謝謝。

回答

1

您可以隨時使用Array.forEach

dynamicArr.forEach(function(el){ 
    console.log(el); 
}); 
+0

會同時給我兩個值,所以我可以訪問它們並進行比較? 如果是這樣,你能舉個例子嗎? – Paddy 2014-10-29 16:49:26

0

我希望我沒有讓你錯了,但這裏有一個解決方案:

for(i = 0; i < dynamicArr.length; i++) { 
    for(j = 0; j < dynamicArr[i].length; j++) { 
     // do something here.. 
    } 
} 
+0

嘿,謝謝你的迴應。我已經嘗試過這種方法。這使我能夠遍歷內部數組:)。我需要讓他們分開,以便我可以比較他們。 – Paddy 2014-10-29 16:53:11

0

你應該嘗試是這樣的: dyn.forEach(function(el){//dyn is the dynamic array console.log(el); //logs to console });

+1

你可以展開這個並告訴我如何比較兩個返回的值。我可以看到它在控制檯中的工作原理,但不知道如何使用它。 – Paddy 2014-10-29 17:01:00