2016-04-06 6 views
0

私はいくつかの情報を含むページにjavascriptオブジェクトを持っています。オブジェクトをループして別のオブジェクトにコピーする必要があります。javascriptオブジェクトをループして値を新しいオブジェクトにコピーする方法

は、ここで私はp_tagからの値を取る必要があり、別のオブジェクトとしてnew_tagするためにそれらをコピーし、私の開始コード

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_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

ありがとうございます。これは十分に簡単です。 Lukaがforループを使用しているものを使用している場合と、それを使用している場合の欠点は何ですか? – gteh

+0

はい。これらのサブ項目のいずれかがオブジェクトであってもオブジェクトそのものがLukasバージョンで参照されている場合は、すべての参照が破損します。 – Neal

関連する問題