我有一些名称相似的数组。
ArrayTop[]
ArrayLeft[]
ArrayRight[]
ArrayWidth[]
我试图在函数中动态设置名称,然后设置值。
我尝试了多种方法来动态选择正确的数组,但没有提出解决方案。
function setarray(a,b,c){
eval(Array+a+[b])=c
}
setarray('Top',5,100)
在此示例中,我尝试设置。
ArrayTop[5]=100
最佳答案
如果您在浏览器中执行此操作,则一种可能的解决方案是:
function setArray(a, b, c){
window['Array' + a][b] = c;
}
setArray('Top', 5, 100);
我建议将所有数组都包含在某个对象中,不要污染全局 namespace 。所以它更像是:
var arrays = {
ArrayTop: [],
ArrayNorth: []
};
function setArray(a, b, c){
arrays['Array' + a][b] = c;
}
setArray('Top', 5, 100);
我不建议使用eval。 Eval并不意味着进行这种动态评估,它对性能产生了巨大影响。