我有一个包含数组名称的字符串变量。我想要做的是访问该数组的元素。并将其写入另一个变量。我怎么能这样做?
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...
我已经阅读了有关使用变量值作为函数的其他问题,但我并不了解这种方法,或者即使这对上述情况也适用。
提前致谢!!
答案 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];
该死的不受欢迎的方式,但做你想要的......