【问题标题】:How to convert array values to variables [duplicate]如何将数组值转换为变量[重复]
【发布时间】:2015-09-14 13:01:54
【问题描述】:

我有一个这样的数组:

multi_arr = ["resi_spec","resi_desc"];

所以每个数组值都被视为一个变量,我想像这样动态存储这些变量的一些值:

resi_spec = "good morning"
resi_desc = "good evening";

使数组值转换为变量。这可能吗?

我不想像这样使用 use obj[resi_spec] 并且我使用数组而不是变量,如果我只是输入 resi_spec 意味着,我会早安。

【问题讨论】:

  • 你从哪里得到应该适合的值?
  • 这听起来像是你应该使用对象的东西。
  • 你从哪里得到"good morning"""good evening"的值?
  • 当前投票的答案有效。要点是 1)您需要一个容器对象(无论是 global 还是 window); 2)您可以在括号符号中使用变量。

标签: javascript variables dynamic-variables


【解决方案1】:

你可以使用一个对象来保存值:

var multi_arr = ["resi_spec","resi_desc"];
var resi = {};
multi_arr.forEach(function(val) { 
    resi[val] = "good morning"; 
});

显然,您需要为每个对象属性设置不同的值,这可以通过辅助函数完成:

var lookupHelper = function(key) {
    if (key == 'resi_spec') return 'good morning';
    if (key == 'resi_desc') return 'good evening';
};
var multi_arr = ["resi_spec","resi_desc"];
var resi = {};
multi_arr.forEach(function(val) { 
    resi[val] = lookupHelper(val); 
});

【讨论】:

  • 很好的方法,尽管如果你想拥有不同的值,forEach 方法将毫无用处。但是,您可以为这些使用另一个数组……
  • 要设置不同的值,您只需实现一些额外的代码来查找正确的值。我添加了一个示例来展示您将如何完成此操作。
【解决方案2】:

您也可以执行以下操作.. 虽然不是很推荐,因为您将创建全局变量。 Jsfiddle

var varNames = ["name1", "name2", "name3"];
for(var i = 0; i < varNames.length; i++){
  window[varNames[i]] = i;
}
console.log(name1); // 0
console.log(name2); // 1
console.log(name3); // 2

【讨论】:

  • 这基本上与对象方法几乎相同,只是您的对象是全局对象。
  • @Xufox 但与其他答案不同,您可以直接使用他们的名字访问它们(甚至不推荐)
【解决方案3】:

最好的方法是有一个像下面这样的对象

multi_arr = ["resi_spec","resi_desc"];
var obj = {};
obj[multi_arr[0]] = "good morning";
obj[multi_arr[1]] = "good evening";
console.log(obj); //prints Object {resi_spec: "good morning", resi_desc: "good evening"})

你可以像下面这样访问变量

console.log(obj["resi_spec"]); //prints "good morning";
console.log(obj["resi_desc"]); //prints "good evening";

【讨论】:

  • 对不起,这不是我所期望的。只是我输入警报(resi_spc);我想得到答案早上好。我不会使用对象可能吗?
  • @SatheeshSivaNallathambi 那你想要什么?
【解决方案4】:

好的,我误解了你的问题,所以这是我的编辑回复。

var multi_arr = ["resi_spec","resi_desc"];

var object = {};

object[multi_arr[0]] = "good morning";
object[multi_arr[1]] = "good evening";

console.log(object);

【讨论】:

  • 你最好删除你的答案并发布一个新的,尽管现在可能为时已晚。
  • 转贴没什么意义,因为其他答案现在有效。
猜你喜欢
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
  • 2021-07-09
  • 2011-08-23
  • 2019-05-08
  • 2011-08-05
  • 2018-06-02
相关资源
最近更新 更多