{"ScriptPreparationCode":"function recursiveDeepCopy(obj) {\r\n return Object.keys(obj).reduce((v, d) =\u003E Object.assign(v, {\r\n [d]: (obj[d].constructor === Object) ? recursiveDeepCopy(obj[d]) : obj[d]\r\n }), {});\r\n}\r\n\r\nvar sampleObject = [{\r\n \u0022id\u0022: \u00220001\u0022,\r\n \u0022type\u0022: \u0022donut\u0022,\r\n \u0022name\u0022: \u0022Cake\u0022,\r\n \u0022ppu\u0022: 0.55,\r\n \u0022batters\u0022: {\r\n \u0022batter\u0022: [{\r\n \u0022id\u0022: \u00221001\u0022,\r\n \u0022type\u0022: \u0022Regular\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00221002\u0022,\r\n \u0022type\u0022: \u0022Chocolate\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00221003\u0022,\r\n \u0022type\u0022: \u0022Blueberry\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00221004\u0022,\r\n \u0022type\u0022: \u0022Devil\u0027s Food\u0022\r\n }\r\n ]\r\n },\r\n \u0022topping\u0022: [{\r\n \u0022id\u0022: \u00225001\u0022,\r\n \u0022type\u0022: \u0022None\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225002\u0022,\r\n \u0022type\u0022: \u0022Glazed\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225005\u0022,\r\n \u0022type\u0022: \u0022Sugar\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225007\u0022,\r\n \u0022type\u0022: \u0022Powdered Sugar\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225006\u0022,\r\n \u0022type\u0022: \u0022Chocolate with Sprinkles\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225003\u0022,\r\n \u0022type\u0022: \u0022Chocolate\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225004\u0022,\r\n \u0022type\u0022: \u0022Maple\u0022\r\n }\r\n ]\r\n },\r\n {\r\n \u0022id\u0022: \u00220002\u0022,\r\n \u0022type\u0022: \u0022donut\u0022,\r\n \u0022name\u0022: \u0022Raised\u0022,\r\n \u0022ppu\u0022: 0.55,\r\n \u0022batters\u0022: {\r\n \u0022batter\u0022: [{\r\n \u0022id\u0022: \u00221001\u0022,\r\n \u0022type\u0022: \u0022Regular\u0022\r\n }]\r\n },\r\n \u0022topping\u0022: [{\r\n \u0022id\u0022: \u00225001\u0022,\r\n \u0022type\u0022: \u0022None\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225002\u0022,\r\n \u0022type\u0022: \u0022Glazed\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225005\u0022,\r\n \u0022type\u0022: \u0022Sugar\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225003\u0022,\r\n \u0022type\u0022: \u0022Chocolate\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225004\u0022,\r\n \u0022type\u0022: \u0022Maple\u0022\r\n }\r\n ]\r\n },\r\n {\r\n \u0022id\u0022: \u00220003\u0022,\r\n \u0022type\u0022: \u0022donut\u0022,\r\n \u0022name\u0022: \u0022Old Fashioned\u0022,\r\n \u0022ppu\u0022: 0.55,\r\n \u0022batters\u0022: {\r\n \u0022batter\u0022: [{\r\n \u0022id\u0022: \u00221001\u0022,\r\n \u0022type\u0022: \u0022Regular\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00221002\u0022,\r\n \u0022type\u0022: \u0022Chocolate\u0022\r\n }\r\n ]\r\n },\r\n \u0022topping\u0022: [{\r\n \u0022id\u0022: \u00225001\u0022,\r\n \u0022type\u0022: \u0022None\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225002\u0022,\r\n \u0022type\u0022: \u0022Glazed\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225003\u0022,\r\n \u0022type\u0022: \u0022Chocolate\u0022\r\n },\r\n {\r\n \u0022id\u0022: \u00225004\u0022,\r\n \u0022type\u0022: \u0022Maple\u0022\r\n }\r\n ]\r\n }\r\n];\r\n\r\nvar myCopy = null;","TestCases":[{"Name":"Lodash cloneDeep","Code":"myCopy = _.cloneDeep(sampleObject);","IsDeferred":false},{"Name":"Json clone","Code":"myCopy = JSON.parse(JSON.stringify(sampleObject));","IsDeferred":false},{"Name":"RFDC copy","Code":"var clone = rfdc({circles: false});\r\nmyCopy = clone(sampleObject);","IsDeferred":false},{"Name":"Recursive deep copy","Code":"myCopy = recursiveDeepCopy(sampleObject);","IsDeferred":false}]}