2017-09-13 31 views
0
var var1; 
var var2; 
var var3; 
var list_var = [var1, var2, var3]; 
var values = ["hello", "cruel", "world"]; 

我想有...如何在列表中設置基元的值?

var1 = "hello" 
var2 = "cruel" 
var3 = "world" 

我應該怎麼辦?在我的情況下,我需要在列表中有一個動態的基本變量列表,需要相應地設置。我想用for循環來做到這一點。

+0

爲什麼你要這麼做?數組是正確的數據結構,用於存儲動態值列表... –

+0

不知道我是否理解你想要做什麼,但是,難道你不能只將字符串推入循環中的數組中嗎? –

+0

在我來說,我需要在列表中有需要進行相應的設置原始變量的動態列表。我想用for循環做這個。另外,我有一個函數可以放置一個基元列表。在該函數中,將爲數組中的每個基元設置新的值。 – notalentgeek

回答

1

你可以用解構。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

在你的榜樣......

var values = ["hello", "cruel", "world"]; 
var [var1, var2, var3] = values; 
console.log(var1, var2, var3) 

https://jsfiddle.net/fnsjrjcv/

更新:您可以使用此你會與一個正常的變量相同的方式來設置變量外範圍。受外範圍內定義它們,這裏有一個例子:

var var1, var2, var3; 

function changeMyVars() { 
    var values = ["hello", "cruel", "world"]; 
    [var1, var2, var3] = values; 
} 

changeMyVars(); 
+0

嘿交配,我還沒有檢查你的解決方案。給我時間,今晚晚些時候我會檢查這個。 – notalentgeek

+0

這個解決方案的工作,有點。但它只會改變當前範圍內的變量。在我的情況下,我把你的代碼放在一個函數中,這些原語在函數之外設置和聲明。變量更改僅在該函數內。 – notalentgeek

+0

我已經更新我的回答給了怎麼辦,你所追求的(我認爲)的例子。希望有幫助。 – TSR

0

一個解決方案可以是:

for (i = 1; i < 4; i++) { 
    eval("var" + i + "=" + values[i]); 
} 

總之,你應該知道,它不能使用這樣的可行辦法,根據情況而定。

+0

Whoaaa'的eval()',我想我沒有其他選擇,是不是? – notalentgeek

0

您可以使用window對象在全局範圍內設置的變量值(雖然不推薦/建議具有全局範圍的變量)。但list_var應具有字符串格式的變量列表。

var list_var = ["var1", "var2", "var3"]; 
var values = ["hello", "cruel", "world"]; 

for (i = 0; i < list_var.length; i++) { 
    window[list_var[i]] = values[i]; 
} 

console.log(var1); 
console.log(var2); 
相關問題