Javascript 如何通过名称访问数组?

Javascript 如何通过名称访问数组?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有两个这样的阵列: var windows_array = []; var google_array = []; var reg = { 'windows': [], 'google': [] }; 在这里,我想通过网络到达函数中指定的数组 function add_friends(network, friend){ (network + '_array').push(friend); } function get_friends(network){ va

我有两个这样的阵列:

var windows_array = [];
var google_array = [];
var reg = {
    'windows': [],
    'google': []
};
在这里,我想通过网络到达函数中指定的数组

function add_friends(network, friend){
    (network + '_array').push(friend);
}

function get_friends(network){
    var d = $('.div_out');
    for(var i=0; i< (network + '_array').Length; i++){
        d.append('<div>' + (network + '_array')[i].name + '</div>')
    }
}
功能添加朋友(网络、朋友){
(网络+“"阵列“)。推送(好友);
}
功能获取朋友(网络){
变量d=$('.div_out');
对于(变量i=0;i<(网络+“_数组”)。长度;i++){
d、 追加(“”+(网络+“”\u数组“)[i].name+“”)
}
}
我这里的问题是如何在jQuery中实现它


我知道在PHP中这是可能的。

在如下对象中声明数组:

var windows_array = [];
var google_array = [];
var reg = {
    'windows': [],
    'google': []
};
然后,将代码更改为
reg
对象的下标:

function add_friends(network, friend) {
    reg[network].push(friend);
}

function get_friends(network)
{
    var $container = $('.div_out');

    $.each(reg[network], function() {
        $('<div>', { text: this.name }).appendTo($container);
    });
}
功能添加朋友(网络、朋友){
注册[网络]。推送(好友);
}
功能获取朋友(网络)
{
var$container=$('.div_out');
$.each(注册[网络],函数(){
$('',{text:this.name}).appendTo($container);
});
}
不那么优雅的解决方案:

 var t = eval(network + '_array');
 t.push(friend);

使用开关箱:

   switch(network) {
        case google:
            google_array.push(friend);
            break;
        case windows:
            windows_array.push(friend);
            break;
        default:
            --
        --
    }

使用if-else如果您只有2个数组如果您发现自己希望在运行时通过动态引用变量名称来标识变量,那么可能有更好的解决方案。对于Javascript,该解决方案通常是一个对象,其键可以是动态的,而不必求助于
eval
。一般来说,
eval
应避免效率低下和容易出现安全/可靠性问题。您的解决方案非常优雅。这是最初接受的答案。一些成员决定抨击它,因为他们害怕使用
eval