在javascript中我有一个字符串数组,其中每个字符串都是另一个数组的名称 如何从名称中获取每个数组对象? 在我的示例中,我需要从其名称中获取 cavaSel 数组,该数组包含在数组 CaveTipo
中for (var i = 0; i < CaveTipo.length; i++) {
var cavaSel = $(CaveTipo[i]);
for (var t = 0; t < cavaSel.length; t++) {
///
}
}
答案 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
)或者在“私有”闭包内为对象提供标识符。