script.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. // ------------------------------1--------------------------------------
  2. // Напишите функцию, которая в объекте меняет местами ключи и значения:
  3. // var obj = {
  4. // 'name': 'John',
  5. // 'email': 'john@mail.com'
  6. // };
  7. // function reverse(val) {
  8. // obj = val;
  9. // for (var key in obj) {
  10. // obj[obj[key]] = key;
  11. // delete obj[key] ;
  12. // }
  13. // return obj;
  14. // }
  15. // reverse(obj);
  16. // console.log(obj); // {'John': 'name', 'john@mail.com': 'email'}
  17. // ------------------------------2--------------------------------------
  18. // Напишите функцию-аналог splice, не используя никакие методы массива:
  19. // var arr = [1, 2, 4, 3];
  20. // arr = splice(arr, 2, 1);
  21. // console.log(arr); // [1, 2, 3]
  22. // arr = splice(arr, 2, 0, 100, 200, 300);
  23. // console.log(arr); // [1, 2, 100, 200, 300, 3]
  24. // var arr = [1, 2, 4, 3];
  25. // debugger;
  26. // function splice() {
  27. // var nwarr = [];
  28. // for (i=0; i < arguments.length; i++) {
  29. // nwarr[i] = arguments[i];
  30. // }
  31. // for (i=0, arr = [], j=0; i < nwarr[0].length; i++, j++) {
  32. // if
  33. // arr[i] = nwarr[0][j];
  34. // }
  35. // // for (var i = 0; i < nwarr[0].length - nwarr[2]; i++ ) {
  36. // // if (i == nwarr[1]) {
  37. // // arr[i] = arr[i + nwarr[2]];
  38. // // }else if ( i + nwarr[1] < i + nwarr[2]) {
  39. // // arr[i] = arr[i + nwarr[2] + 1];
  40. // // }
  41. // // }
  42. // // arr.length = arr.length - nwarr[2];
  43. // // return console.log(arr);
  44. // // };
  45. // // function splice(arr) {
  46. // // array = arr;
  47. // //
  48. // // if (nwarr[2] === 1) {
  49. // // for (i=0,arr = []; (i < array[2]); i++) {
  50. // // arr[i] = array[i];
  51. // // }
  52. // // }
  53. // return console.log( arr );
  54. // }
  55. // splice(arr, 2, 1);
  56. // splice(arr, 2, 0, 100, 200, 300);
  57. // ------------------------------3--------------------------------------
  58. // Напишите функцию, которая возвращает сумму всех чисел, переданных в качестве аргументов,
  59. // число которых не ограничено. Функция работает только с числами (включая строковые).
  60. // Если какой-то из параметров - массив, то к сумме добавляется также сумма значений этого массива
  61. // (если какое-либо из значений этого массива также является массивом, то к результату добавляется
  62. // также и сумма его значений, и так далее).
  63. // var sum = getSum(1, '1', 'one', [2, '2', 'two']);
  64. // console.log( sum ); // 6
  65. // function sum() {
  66. // for(var i=0, summ = 0; i<arguments.length; i++){
  67. // if ( arguments[i] instanceof Array ) {
  68. // summ += sum.apply(arguments[i]);
  69. // }
  70. // else if (isFinite(arguments[i])) {
  71. // summ += +arguments[i];
  72. // }
  73. // }
  74. // return console.log(summ);
  75. // }
  76. // sum(1, '1', 'one', [2, '2', 'two'], 1, 4, 5, 7);
  77. function getSum(){
  78. var sum = 0;
  79. for(var i=0; i< arguments.length; i++){
  80. // sum+= +arguments[i]
  81. if (isFinite(arguments[i]))
  82. {sum+= +arguments[i];
  83. } else if (typeof arguments[i] === "object") {
  84. sum+= getSum.apply(null, arguments[i])
  85. }
  86. }
  87. return console.log(sum);
  88. }
  89. getSum(1, '1', 'one', [2, '2', 'two'], 1, 4, 5, 7);