2016-04-06 96 views
0

我在包含一些信息的頁面上有一個JavaScript對象。我需要遍歷該對象並將其複製到另一個對象。如何通過javascript對象循環並將值複製到新對象中

這裏是我的出發代碼

var p_tag = {}; 
var new_tag = {}; 
p_tag.abc='abc'; 
p_tag.def='def'; 
p_tag.ghi='ghi'; 

for (var key in p_tag) { 
    if (p_tag.hasOwnProperty(key)) { 
    console.log(key + "'s favorite fruit is " + p_tag[key]); 
    } 
} 

我需要從P_TAG的價值和將它們複製到new_tag另一個對象。

我可能不知道每個頁面上有哪些鍵可用,因此尋找可以遍歷所有可用的p_tags並將它們複製到new_tag的內容。

謝謝,

+0

您可以跳過'if(p_tag.hasOwnProperty(key))'。這就像「對於這個對象中的每個鍵,檢查這個對象是否有這個鍵」。只需將其分配給'new_tag' – Pimmol

回答

1

只需將所有舊值分配給新值。

for (var key in p_tag) { 
    if (p_tag.hasOwnProperty(key)) { 
     console.log(key + "'s favorite fruit is " + p_tag[key]); 

     new_tag[key] = p_tag[key]; 
    } 
} 
2

做一個對象的深層副本,最簡單的方法:

var copy = JSON.parse(JSON.stringify(obj)); 

因此,它基本上把你的對象轉換爲字符串,然後用引用回到對象再次到原來的。

+0

謝謝。這看起來很簡單。它的任何缺點與使用下面哪個使用for循環的Luka相比較? – gteh

+0

是的。如果這些子項目中的任何一個都是對象也是對象本身,它們仍將在Lukas版本中引用,在我的所有引用中將被打破。 – Neal