2015-09-14 383 views
3

我有值的数组是这样的:如何数组值转换为变量

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

因此,每个数组值被认为是一个变量,我想动态存储这些变量的一些值是这样的:

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

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

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

+0

你从哪里得到应该适合的值? – Hacketo

+1

这听起来像你应该使用的对象。 – saadq

+0

你从哪里得到'早上好'和''晚上好'的价值?' – Halcyon

回答

-1

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

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

var object = {}; 

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

console.log(object); 
+1

你最好只是删除你的答案并发布一个新的答案,尽管现在可能已经太晚了 – Xufox

+0

由于其他答案现在有效,所以没有什么意义。 – Corbin

4

最好的办法是,如波纹管

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"; 
+0

对不起这不是我所期望的,只是我输入alert(resi_spc);我想早上得到答案,我不会使用object这是可能的吗? – SSN

+0

@SatheeshSivaNallathambi你想要什么呢? – Mritunjay

6

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

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

+2

好的方法,虽然'forEach如果你想得到不同的值,''方法将会变得毫无用处,但是你可以使用另外一个数组... – Xufox

+0

要设置不同的值,你wou ld只是实现一些额外的代码来查找适当的值。我已经添加了一个示例来说明如何完成此操作。 – pherris

4

您也千万以下。虽然不真的建议,因为你会创建全局变量。 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 
+0

这基本上与对象方法几乎相同,只是对象是全局对象。 – Xufox

+2

@Xufox但与其他答案不同,你可以直接访问他们的名字(甚至不推荐) – Hacketo