Advertisement
gskorchev

tasks

Feb 9th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Fibonacci numbers
  2.  
  3. const fib = function (n) {
  4.     if (n === 0 || n === 1) {
  5.         return [0, 1];
  6.     }
  7.     const fibArr = fib(n-1)
  8.     fibArr.push(fibArr[fibArr.length - 1] + fibArr[fibArr.length - 2]);
  9.     return fibArr;
  10.  
  11. }
  12.  
  13. console.log(fib(8));
  14.  
  15.  
  16. // duplicate Array
  17.  
  18. const duplicate = function(arr) {
  19.     return arr.concat(arr);
  20. }
  21.  
  22. console.log(duplicate([1,2,3]))
  23.  
  24. // Deep copy an object
  25.  
  26. const deepCopy = function (obj) {
  27.     const copyObj = {};
  28.     const keys = Object.keys(obj)
  29.     keys.forEach(key => {
  30.         if (obj[key] instanceof Object) {
  31.             if (obj[key] instanceof Function) {
  32.                 copyObj[key] = obj[key]
  33.             } else if(obj[key] instanceof Array) {
  34.                 copyObj[key] = obj[key].map(el => {
  35.                     if (el instanceof Object) {
  36.                         el = deepCopy(el)
  37.                     }
  38.                     return el;
  39.                 });
  40.             }
  41.             else {
  42.                 copyObj[key] = deepCopy(obj[key])
  43.             }
  44.         } else {
  45.             copyObj[key] = obj[key]
  46.         }
  47.     });
  48.     return copyObj;
  49. }
  50.  
  51. const human = {
  52.     name: "Georgi",
  53.     address: {
  54.         street: "ulica"
  55.     },
  56.     func: function() {
  57.         return 1;
  58.     },
  59.     arr: [1,2,3]
  60. };
  61. const human2 = deepCopy(human);
  62. console.log(human === human2)
  63. human2.arr.push(4);
  64. human2.address.street = ""
  65.  
  66. console.log(human)
  67.  
  68. console.log(human2)
  69.  
  70.  
  71. // Total Time
  72.  
  73. const arr = ["1:23:45"];
  74.  
  75. const totalTime = function (arr) {
  76.     const totalSeconds = arr.reduce((sec, el) => {
  77.         const timeArr = el.split(':').map(Number);
  78.         sec += timeArr[0] * 3600 + timeArr[1] * 60 + timeArr[2];
  79.         return sec;
  80.     }, 0);
  81.     const hours = Math.floor(totalSeconds / 3600);
  82.     const mins = Math.floor((totalSeconds - hours * 3600) / 60);
  83.     const seconds = totalSeconds - hours * 3600 - mins * 60;
  84.     return [hours, mins, seconds];
  85. }
  86.  
  87. console.log(totalTime(arr));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement