从名称中获取javascript数组对象

时间:2015-03-30 10:13:48

标签: javascript arrays

在javascript中我有一个字符串数组,其中每个字符串都是另一个数组的名称 如何从名称中获取每个数组对象? 在我的示例中,我需要从其名称中获取 cavaSel 数组,该数组包含在数组 CaveTipo

for (var i = 0; i < CaveTipo.length; i++) {
    var cavaSel = $(CaveTipo[i]);
    for (var t = 0; t < cavaSel.length; t++) {
        ///
    }
}

1 个答案:

答案 0 :(得分:0)

按'名字'我会假设你的意思是'标识符' 例如:假设您有'标识符'CaveTipo来引用以下示例数组:

var CaveTipo=[ 'my_array_a'
             , 'my_array_b'
             , 'my_array_c'
             ]
; //end var

上面的示例数组包含字符串,这些字符串是其他数组的标识符,例如:

var my_array_a=[ /* data */ ]
,   my_array_b=[ /* data */ ]
,   my_array_c=[ /* data */ ]
; //end var

现在为了在CaveTipo中使用标识符(字符串),应该在包含目标数组的对象上使用括号表示法:namespace[/*identifier*/](而不是点符号)。

如果该命名空间是全局的,那么您可以使用window(或self):window[/*identifier*/]

var cavaSel, i, t;
for (i = 0; i < CaveTipo.length; i++) {
    cavaSel = window[ CaveTipo[i] ];
    for (t = 0; t < cavaSel.length; t++) {
        ///
    }
}

现在让我们假设数组位于您创建的对象(全局)中:

var caveData={ my_array_a: [ /* data */ ]
             , my_array_b: [ /* data */ ]
             , my_array_c: [ /* data */ ]
             }
;

var cavaSel, i, t;
for (i = 0; i < CaveTipo.length; i++) {
    cavaSel = caveData[ CaveTipo[i] ];
    for (t = 0; t < cavaSel.length; t++) {
        ///
    }
}

在大多数情况下,最后一种方法更好,因为它可以释放全局中的命名空间使用(对于my_array_X)或者在“私有”闭包内为对象提供标识符。