2016-04-06 3 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

Спасибо. Это выглядит достаточно просто. Любые недостатки, связанные с этим, в сравнении с тем, что указано Luka, которое использует цикл for? – gteh

+0

Да. если какой-либо из этих подпунктов является объектами и самими объектами, они по-прежнему будут ссылаться в версии Lukas, в моей все ссылки будут нарушены. – Neal

Смежные вопросы