Guest User

Untitled

a guest
Jan 6th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. const clone = (deepCopy = false, source) => {
  2. if (Array.isArray(source)) {
  3. let array = [];
  4. source.forEach((element, index) => {
  5. if (typeof element == "object") {
  6. array[index] = clone(deepCopy, element);
  7. } else {
  8. array[index] = element;
  9. }
  10. });
  11.  
  12. return array;
  13. }
  14.  
  15. return Object.keys(source).reduce((acc, key) => {
  16. const valueToBeCopied = source[key];
  17.  
  18. if (typeof valueToBeCopied == "object") {
  19. valueToBeCopied = clone(deepCopy, valueToBeCopied);
  20. if (deepCopy) {
  21. const descriptor = Object.getOwnPropertyDescriptor(source, key);
  22.  
  23. descriptor.value = valueToBeCopied;
  24. valueToBeCopied = descriptor;
  25. }
  26. }
  27.  
  28. acc[key] = valueToBeCopied;
  29. return acc;
  30. }, {});
  31. };
Add Comment
Please, Sign In to add comment