//http://stackoverflow.com/questions/728360/most-elegant-way-to-clone-a-javascript-object#answer-728694
export default function clone(obj) {
  var copy;

  // Handle the 3 simple types, and null or undefined
  if (null == obj || "object" != typeof obj) return obj;

  // Handle Date
  if (obj instanceof Date) {
    copy = new Date();
    copy.setTime(obj.getTime());
    return copy;
  }

  // Handle Array
  if (obj instanceof Array) {
    copy = [];
    for (var i = 0, len = obj.length; i < len; i++) {
      copy[i] = clone(obj[i]);
    }
    return copy;
  }

  // Handle Object
  if (obj instanceof Object) {
    copy = {};
    for (var attr in obj) {
      if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
    }
    return copy;
  }

  throw new Error("Unable to copy obj! Its type isn't supported.");
}
@@ -137,20 +137,8 @@
 j) %7B
-%0A  var copy;
 %0A%0A  
@@ -293,24 +293,28 @@
 Date) %7B%0A    
+let 
 copy = new D
@@ -431,125 +431,37 @@
     
-copy = %5B%5D;%0A    for (var i = 0, len = obj.length; i %3C len; i++) %7B%0A      copy%5Bi%5D
+return obj.map(e
  =
+%3E
  clone(
-obj%5Bi%5D);%0A    %7D%0A    return copy
+e))
 ;%0A  
@@ -513,20 +513,24 @@
 ject) %7B%0A
-
     
+let 
 copy = %7B

Simplify clone function