2

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

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

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

4 回答 4

3

我不确定您为什么要这样做,但是您可以为此使用数组对象。

var myArray = ["a","b","c"];
var myObject = {"myArray": myArray};
var myPointer = "myArray";
console.log(myObject[myPointer][1]);
于 2013-09-19T14:07:53.197 回答
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];
}

编辑:正如其他帖子的评论中所述,这并不是一个真正的指针。我假设您想根据字符串值动态确定要使用的数组。

于 2013-09-19T14:03:25.270 回答
0

原始类型,主要是字符串/数字/布尔值,为了提高效率而按值传递。函数、对象、数组等对象是通过引用传递的。

所以你可以把它变成一个对象,然后使用对它的引用。

看到这个问题

希望有帮助:)

于 2013-09-19T14:05:46.153 回答
0

我不确定为什么在你的例子中它会返回“b”......但我认为更好的解决你问题的方法是使用字典,实际上它是 JS 中非常常见的数据结构。

所以在你的情况下:

var myPoint = {
    'a': 'm',
    'b': 'y',
    'c': 'p',
}

等等..

于 2013-09-19T14:08:12.500 回答