2011-11-24 70 views
3

有沒有一種方法可以在javascript中定義變量以將它們附加到另一個變量中?將字符串附加到變量名稱

var card_id; 
var card_links_grid+card_id; 

我想第二個變量追加在第一個變量中找到的信息。對於每個card_id都會有一個card_links_grid。我希望能夠訪問特定card_id的card_links_grid變量。

什麼是正確的方法來做到這一點?

+5

通常當我覺得我需要改變一個變量名這樣的,我認識的最簡單的辦法是使用一個數組,而不是 – ChrisW

+1

@ChrisW:或對象... –

+0

這是你想要的嗎? card_id = 3 card_links_grid1 card_links_grid2 card_links_grid3分別是5,6和7,但是當你使用card_links_grid + card_id時,你希望它返回7?我對麼? – Baz1nga

回答

7

正確的做法是使用數組或對象,具體取決於id是否將按順序或命名。

var card_links_grid = {}; 
var card_id = "the_hanged_man"; 
card_links_grid[card_id] = "some value"; 

var card_links_grid = []; 
card_links_grid.push("some value"); 

可變變量是可能的,但只有一些難以維持,應該避免調試的方法。使用爲您想要表示的數據結構設計的對象類型。

+0

我同意,這聽起來像你應該使用一個對象。上面的例子應該可以解決你的問題。 – Boundless

+0

@Quentin你的建議是我正在尋找的。我不必追加到變量中,因爲該對象將允許我使用card_id從card_links_grid中檢索信息。我正在測試這種方法。 – user823527

+0

一個對象工作。我有'var card_id =「一個id」; var anobject =新對象; var card_links_grid = {}; card_links_grid [card_id] = anobject;'這就是我所需要的。謝謝。 – user823527

0

您可以使用eval方法相同,並且逃脫它..這樣的事情

var card_id=3; 

var card_links_grid1=5,card_links_grid2=6,card_links_grid3=7; 

eval("card_links_grid"+card_id) //will o/p 7 

PS:如果我正確ustood問題

+0

你可以,但它調試速度慢並且很難。改用適當的數據結構。幾乎沒有任何理由使用eval。 – Quentin

+1

同意!就像我所有的使用關聯數組.. ..但我回答了這個問題,nt建議替代..其人喜歡建議使用jQuery的大多數JS問題在這裏! zzzz .. – Baz1nga

+0

一個對象是正確的數據結構。 – user823527