从其名称获取javascript数组对象

Get javascript array object from its name

本文关键字:javascript 数组 对象 获取      更新时间:2023-09-26

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

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

我认为"name"是指"identifier"
例如:假设您有"标识符"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)中的命名空间使用,要么在"private"闭包中为对象提供标识符。