2016-03-07 87 views
1

我確定這非常簡單,我只是不能解決如何做到這一點。從動態變量獲取數組

我要動態地製造陣列從一個變量等於另一個:

var pageID = document.getElementsByClassName('page_example')[0].id; 

比方說,這回PAGE_1的ID

var page_1 = ['value1','value2','value3']; 
var page_2 = ['value4','value5','value6']; 
var page_3 = ['value7','value8','value9']; 

var page_array = (then have the associated pageID's array here) 

因此,在這個例子中,

page_array would equal ['value1','value2','value3'] 
+0

我不確定完全理解,但你可以這樣做:var page_array = eval(「page_1」)'。您應該提供更多代碼 – cl3m

+0

查看您的標記將確實有所幫助 – gurvinder372

回答

1

而不是存儲在單獨的變量的陣列,它們中的對象與所述ID作爲密鑰存儲:

var pageID = "page_1"; 
var pageArray = pages[pageID]; 

var pages = { 
    page_1: ['value1','value2','value3'], 
    page_2: ['value4','value5','value6'], 
    page_3: ['value7','value8','value9'] 
} 

彷彿對象是一個assosiative陣列可以訪問陣列

+0

謝謝,我所需要做的就是'var page_array = eval(pageID)'。儘管你的方法更清潔! – wadclapp

+1

@wadclapp eval非常小心。用戶可能會將頁面ID更改爲瀏覽器開發人員工具中的某些惡意代碼。 – Soana

0

根據您想要達到的目標,您可以選擇兩種或三種方法之一。

我認爲什麼是最簡單的方法是if/else語句:

if (condition) { 
page_array = page_1.slice(0); 
} else if (other condition) { 
page_array = page_2.slice(0); 
} else if... 

可以使用,這也取決於你的最終目標是什麼的另一種方法,將是一個for循環:

for (var i = 0; i < numOfDesiredLoops; i++) { 
    page_array = page_1.slice(0, i); 
} 

或者你可以使用兩者的結合:爲什麼你需要

for (var i = 0; i < numOfDesiredLoops; i++) { 
    if (condition) { 
    page_array = page_1.slice(0); 
    } else if (other condition) { 
    page_array = page_2.slice(1); 
    } else if... 
} 

隨着越來越多的信息這個變量改變了,我可以給你更好的答案。

編輯:請記住.slice()的參數可以是任何你想要的。

+0

有關.slice()的更多信息,請訪問https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/切片 –