使用变量值来调用数组元素

时间:2012-01-12 13:58:30

标签: javascript arrays

我有一个包含数组名称的字符串变量。我想要做的是访问该数组的元素。并将其写入另一个变量。我怎么能这样做?

var sample = new Array();
sample[0] = 'one';
sample[1] = 'two';

var arrayname = "sample";
var number = arrayname[1];  ///  Something like this, although I realize this doesn't work for obvious reasons...

我已经阅读了有关使用变量值作为函数的其他问题,但我并不了解这种方法,或者即使这对上述情况也适用。

提前致谢!!

7 个答案:

答案 0 :(得分:2)

这应该这样做:

    var sample = new Array();
    sample[0] = 'one';
    sample[1] = 'two';

    var arrayname = "sample";
    var number = window[arrayname][1];
    alert(number);

答案 1 :(得分:1)

JavaScript中没有通用的方法来完全你在那里设置的内容,但可以使用字符串变量以动态的方式访问对象属性。

var objArr = { array1: [], array2: [] };

现在您可以使用值为“array1”或“array2”的变量来获取这些数组:

var name = "array2";
objArr[name].push(14);

无法在JavaScript中执行的操作是通过动态名称访问本地变量,或者如果您愿意,可以间接访问本地变量。如果您有全局上下文的名称,则可以访问全局变量,在浏览器中为window对象:

window[ name ].push(17);

然而,没有办法为本地范围获得类似的名称。

编辑 - @Neal指出(并且被无情地贬低)eval()可以做你想做的事,但是很多人建议远离eval(),除非这是绝对不可避免的(这是非常罕见的)。我已经训练自己忽略它以至于当问到这样的问题时我总是忘记它(奇怪的是,经常在SO上,尽管在我的编程实践中我从未发现自己想要这样做)。

答案 2 :(得分:0)

您可以使用以下内容:

var arrayName = "sample",
    number = window[arrayname][1];

答案 3 :(得分:0)

我的意思是你可以使用eval,但这不是最好的方法:

eval("var arrayname = sample");
var number = arrayname[1];  

为什么不这样做:

var arrayname = sample;
var number = arrayname[1];  

答案 4 :(得分:0)

如果它在全局范围内,您可以通过

访问您的阵列
var sample = new Array();
sample[0] = 'one';
sample[1] = 'two';
var arrayname = "sample";
var number = (window[arrayname])[1]

答案 5 :(得分:0)

var sample = new Array();
sample[0] = 'one';
sample[1] = 'two';
var obj = {"sample": sample}

var arrayname = "sample";
var number = obj[arrayname][1];

答案 6 :(得分:0)

出于我的想法......

首先声明一些全局变量

var buf;

然后

var sample = new Array();
sample[0] = 'one';
sample[1] = 'two';

var arrayname = "sample";
eval('buf=' + arrayname + ';');
var number = buf[1];

该死的不受欢迎的方式,但做你想要的......