是否可以使用字符串作为数组的名称?
var myArray = ["a","b","c"];
var myPointer = "myArray";
console.log(myPointer[1]); //Should return "b"
答案 0 :(得分:3)
是的,你可以这样做。我知道几种方法。
第一个是使用eval()
,但我不打算讨论,因为我认为eval()
是邪恶的。
一种方法是了解您正在使用的范围。如果您使用window
范围,则可以始终window[myPointer][1]
。如果您使用的是不同的范围,那么就像执行scope[myPointer][1]
一样简单。
如果您没有范围或不愿意毒害您的窗口范围,您可以使用以下内容:
function blork (pointer) {
var arrays = {
number : [ 0, 1, 2, 3, 4, 5 ],
letters : [ 'a', 'b', 'c', 'd', 'e' ]
}
return arrays[pointer];
}
编辑:正如其他帖子的评论中所述,这不是一个真正的指针。我假设您想根据字符串值动态确定要使用的数组。
答案 1 :(得分:3)
我不确定你为什么要这样做,但你可以使用数组对象。
var myArray = ["a","b","c"];
var myObject = {"myArray": myArray};
var myPointer = "myArray";
console.log(myObject[myPointer][1]);
答案 2 :(得分:0)
为了提高效率,原始类型(主要是字符串/数字/布尔值)按值传递。诸如函数,对象,数组等对象通过引用传递。
所以你可以把它变成一个对象,然后使用对它的引用。
请参阅this question。
希望有所帮助:)
答案 3 :(得分:0)
我不确定为什么在你的例子中它会返回“b”...... 但我认为更好的方法是使用字典,实际上它是JS中非常常见的数据结构。
所以在你的情况下:
var myPoint = {
'a': 'm',
'b': 'y',
'c': 'p',
}
依旧......