字符串指向数组

时间:2013-09-19 13:58:20

标签: javascript arrays object pointers

是否可以使用字符串作为数组的名称?

var myArray = ["a","b","c"];
var myPointer = "myArray";

console.log(myPointer[1]); //Should return "b"

4 个答案:

答案 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',
}

依旧......