javascript - 将 String 转换为 JavaScript 中已声明的对象?

标签 javascript arrays javascript-objects

我有这个代码:

//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 对象转换为数据库,这可能是一个坏主意,但我想知道是否有解决方案?他们选择数组中的值的方式相当复杂,我认为这会偏离问题,但它们或多或少是随机生成的。

最佳答案

不要将每个对象存储为单独的变量,而是创建一个映射:

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];
});

关于javascript - 将 String 转换为 JavaScript 中已声明的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43670815/

相关文章:

ios - 快速切换与数组匹配的模式

javascript - 如何从数组中删除对象?

javascript - 将数组中的所有键值推送到新数组中,只要不同键的值(在同一对象中)满足特定条件

javascript - 如何使用扩展组合对数组的响应?

javascript - 如何在 Greasemonkey 脚本中不使用 !important 覆盖页面样式?

javascript - 如何在 javascript 中显示一条消息几秒钟然后消失

arrays - 使用 Swift 的 NSButton 从 NSTableView 上的数组中删除数据

javascript - JavaScript Promise 的最佳实践

C : reverse array using pointers?

JavaScript/jQuery : Compare 2 jSON objects and output result into new object