2011-11-24 74 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