2016-05-02 18 views
0

Ich habe ein Objekt wie folgt aus:Wie kopiere ich ein Objekt in ein anderes und füge ein neues Feld zum neuen Objekt in JavaScript hinzu?

{"question": "", "options" : [{"subject": "", "teacher": "", "answer": [] } 
} 

Ich möchte Daten von diesem Objekt in diese kopieren:

{"question": "", "options" : [{"subject": "", "teacher": "", "new":" " } 
} 

Ich möchte

das Feld „neue“ anstelle von „Antwort“ hinzufügen
+2

Sehen Sie diese Frage ist - http://stackoverflow.com/questions/728360/most-elegant-way- Zu-Klon-ein-Javascript-Objekt – legendofawesomeness

Antwort

1

Tief Klonen kann wie folgt erreicht werden: var b = JSON.parse(JSON.stringify(a));

Die gewünschte Manipulation wäre

var a = {"question": "", "options" : [{"subject": "", "teacher": "","answer": [] }} 
var b = JSON.parse(JSON.stringify(a)) 
delete b.options[0].answer 
b.options[0].new = 'your content' 
0

Aus Gründen der eine andere Antwort ... (obwohl ich eher das erste von @lipp mochte)

Hier ist eine Funktion, die tief Klonen Ihr Objekt und swithches die Antwort Schlüssel für die neuer Schlüssel.

Problem diese jede Schlüssel Antwort substitue wird, wo immer sie es finden. So dass, wenn Sie dies tun:

clone({"question": "", "answer" : [{"subject": "", "teacher": "", "answer": [] ] } }) 

Ergebnis

{"question": "", "new" : " " } 

var toClone = {"question": "", "options" : [{"subject": "", "teacher": "", "answer": [] ] } }; 

function clone(original){ 
    var copy; 

    if (original instanceof Array) { 
     copy = []; 
     for (var i = 0, limit = original.length; i < limit; ++i) { 
      copy[i] = clone(original[i]); 
     } 
    } else if (original instanceof Object) { 
     copy = {}; 
     for (var key in original) { 
      if(key === "answer"){ 
       copy["new"] = " "; 
      } else 
       copy[copiedKey ] = clone(original[key]); 
     } 
    } else 
     copy = original; 

    return copy; 
} 
Verwandte Themen