变量作为数组的值(数组[变量])

时间:2013-01-25 08:49:59

标签: javascript

我正在尝试编写一个函数,该函数从已定义的数组中调用一个值:

var categories = [];
categories[caller1] = "asasd";
categories[caller2] = "asasd";
categories[caller3] = "asasd";

function getNewItem(caller){
    $("#"+categories[caller]).show();
}

所以基本问题是,这不起作用:

function(VARIABLE){
    $("#"+ categories[VARIABLE]).show();
}

此代码减少到最低限度以显示问题。

2 个答案:

答案 0 :(得分:1)

我想看看caller1,caller2和caller3是什么定义的。我假设,我确信我们都是,他们是整数。因此,它看起来像这样:

var caller1 = 0
  , caller2 = 1
  , caller3 = 2
;//var

var categories = [];
categories[caller1] = "asasd";
categories[caller2] = "asasd";
categories[caller3] = "asasd";

function getNewItem(caller){ $("#" + categories[caller]).show() }

但是我的另一个假设是它们可能是字符串,在这种情况下你做错了。使用对象而不是数组。

var caller1 = 'Gary'
  , caller2 = 'John'
  , caller3 = 'Paul'
;//var

var categories = {};
categories[caller1] = "asasd";
categories[caller2] = "asasd";
categories[caller3] = "asasd";

function getNewItem(caller){ $("#" + categories[caller]).show() }

但这甚至可以扩展到功能和数字:

var caller1 = function(){ return 'blah' }
  , caller2 = 8
  , caller3 = 'aString'
;//var

var categories = {};
categories[caller1] = "asasd";
categories[caller2] = "asasd";
categories[caller3] = "asasd";

function getNewItem(caller){ $("#" + categories[caller]).show() }

答案 1 :(得分:0)

你必须连接:

"#" + categories[caller]
  --^--

你也有一个数组,但你应该使用一个对象:

var categories = {};
categories.caller1 = 'asd';
$("#"+ categories.caller1).show();

另外,你有一些严重的语法错误,但尝试上面的代码应该可以工作。