我有这段代码:
//Arguments are unique.
var Object1 = new Object(argument,argument,argument);
var Object2 = new Object(argument,argument,argument);
var Object3 = new Object(argument,argument,argument);
//...
var Object100 new Object(argument,argument,argument);
function convert(){
var array = ["Object1","Object56"];
// Manipulate values in array above as if they were the objects already
//declared above this function, like acessing "Object56.argument" property.
}
我需要将数组中的字符串转换为已声明的对象,以便在函数中操作对象属性(从参数转换)。我意识到我基本上把JS对象变成了一个数据库,这可能是一个坏主意,但我想知道是否有解决方案呢?他们选择数组中的值是相当复杂的,我认为它会减少问题,但它们或多或少是随机生成的。
答案 0 :(得分:2)
不是将每个对象存储为单独的变量,而是创建一个地图:
var objectMap = {
Object1: new Object(argument, argument, argument),
Object2: new Object(argument, argument, argument),
// ...
Object100: new Object(argument, argument, argument)
};
这样的映射就足够了。
您可以手动执行此操作:
var array = ['Object1', 'Object2'];
var objects = [];
for(var i = 0; i < array.length; i++) {
var key = array[i];
objects.push(objectMap[key]);
}
或(如果您支持ES5)使用map功能:
var array = ['Object1', 'Object2'];
var objects = array.map(function (key) {
return objectMap[key];
});