2017-05-27 19 views
0

說,我有一個目標:如何破壞在JavaScript中的所有屬性爲本地設

const ob = { a : 1, b : 'hello world', c : 3, d : false, e : { zn : 'nested value' }}; 

我想一個襯墊,最好使用自毀搶在局部範圍內5名新的變量。

//do something with ob 
//now i want to have 5 const/let defined in local scope 
// such as, a =1, b = 'hello world', c = 3, d = false, e = { zn : 'nested value' } 

EDIT1:我早就關鍵特性,有10個物業,我想用所有的人,直接沒有任何斑點,我覺得寫長篇10變量名無聊..

+0

這只是一個想法鍛鍊或者你真正需要使用它們的變量? –

+0

是的,我真的想要使用這些,ob來自導入一些xyz實用程序文件 – codeofnode

+0

爲什麼不從ob創建一個新的對象呢?用縮短的鍵名稱? –

回答

3

這是就這麼簡單的一個對象的風格語法

const {a, b, c, d, e} = {a: 1, b: 'hello world', c: 3, d: false, e: {zn: 'nested value'}}; 
a; // 1 
b; // "hello world" 
// etc 

注意你也可以進入陣列或者如果需要更深入巢包裹你想要的標識;

const [{f: {g}}] = [{f: {g: 1}}]; 
f; // undefined 
g; // 1 

此外,你可以destructring

const {old: now} = {old: 1}; 
old; // undefined 
now; // 1 
+0

我有長鍵名屬性,並有10個屬性,我想直接使用沒有任何點..寫10是有點無聊... – codeofnode

+3

你將不得不寫出標識符名稱的地方(不要使用'用',你將永遠無法調試它)。如果鍵入longhand太多,我建議您查看支持tab完成的IDE。其他人在5年內瞭解的代碼比短標識符名稱更重要。 –

+0

我真的很欣賞這樣的建議..所以+1,但我離開那不被接受..所以在未來有些人可能會嘗試帶來魔法。歡呼聲 – codeofnode

1

那麼,如果你想縮短,並將其分配給一個變量時重命名標識符,一種方法是使用eval。

但是再次,爲什麼你需要創建它們作爲變量?

const ob = { a : 1, b : 'hello world', c : 3, d : false, e : { zn : 'nested value' }}; 
 

 
var i = 0; 
 
for (let key in ob) 
 
{ 
 
    eval(`var index${i} = "${ob[key]}"`); 
 
    i++; 
 
} 
 

 

 
console.log(index0); 
 
console.log(index1); 
 
console.log(index2);

相關問題