我有10个数组。它们的名称为resultsYEARobject
,其中2002 <= YEAR <= 2011
。我想要一种基于另一个变量调用每个数组的方法。为了给出更多的上下文,我有一个下拉菜单,用户可以选择他们想要搜索的一年(2002-2011)。当他们点击“搜索”按钮时,我希望能够搜索与该年有关的结果数组。
这就是我想要完成的事情(在PSEUDOCODE 中)。
var year_choice = 2002;
var array_to_search = ("results" + year_choice + "object");
//array_to_search would be "results2002object"
for(int i = 0; i < array_to_search.length; ++i) {
//do stuff
}
我已经编程了很长时间,知道没有任何逻辑意义,没有程序可以正确编译代码。那就是说,是否有另一种正确的方法可以完成我想要做的事情?
修改
getScript(file_path, function(){
alert("found and loaded file " + file_path);
//refine for the parameter
var search_results = new Array();
for(var i = 0; i < results2002objects.length; ++i) { //go through the array in the file I want (dependant on what the user chooses in the drop down menu)
if(results2002objects[i].sub == selected_parameter) {
search_results.push(results2002objects[i]); // add the object to the array
}
}
alert("found " + search_results.length + " results with the parameter " + selected_parameter);
for(var g = 0; g < search_results.length; ++g) {
$("#right_pane_results").append(search_results[g].st_id);
}
});
所以在我加载文件后,我会像那样浏览数组。问题在于用户选择的年份,上述代码将通过results2002object
。此外,我对键名称(array ['whatever']没有多少控制权,因为使用我制作的Java程序解析数据,并使用GSON库将其转换为JSON。
答案 0 :(得分:2)
为什么不只是制作一个对象并动态添加元素?
var year_choice = {}
var year_the_user_selects = "2002";
year_choice[year_the_user_selects] = array_you_want_here;
答案 1 :(得分:1)
所以你有以下数组:
results2002obj,results2003obj,...,results2012obj
如果他们是阵列,你想要访问它们。
您可以使用“self”命名空间。例如,results2002obj与 self.results2002obj
值得注意的是,在JavaScript中,a.xyz与['xyz']相同
这意味着您可以将任何变量名称视为数组中的键:
function get_results(year){
return self['results'+year+'obj'];
}
希望这有帮助。
答案 2 :(得分:0)
不要在数组中使用数字键,因为它会一直创建0,1,2,直到2002年。
声明这样的地图:
var choices={
'year_2002':['option 1', 'option 2', 'option 3'],
'year_2003':['option 1'],
'year_2004':['option 1','option 2'],
...
};
//pick a year:
var year=2003;
var options = choices['year_'+year];