script.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. // ДЗ: Функции и области видимости
  2. // a
  3. // function a(text) {
  4. // alert(text);
  5. // }
  6. // cube
  7. // function cube(num = 1) {
  8. // if (Number.isNaN(+num)) {
  9. // return "Error";
  10. // } else {
  11. // return num ** 3;
  12. // }
  13. // }
  14. // avg2
  15. // function avg2(a, b) {
  16. // if (
  17. // !Number.isNaN(+a) &&
  18. // !Number.isNaN(+b) &&
  19. // typeof +a === "number" &&
  20. // typeof +b === "number"
  21. // ) {
  22. // return ((a + b) / 2).toFixed(1);
  23. // } else {
  24. // return "Error";
  25. // }
  26. // }
  27. // sum3
  28. // function sum3() {
  29. // return arguments[0] + arguments[1] + arguments[2];
  30. // }
  31. // intRandom
  32. // function intRandom(...range) {
  33. // let random;
  34. // if (range[0] === range[1] && range[0] < 0 && range[1] < 0) {
  35. // return range[0];
  36. // }
  37. // range.length > 1
  38. // ? (random = Math.random() * range[1] + range[0])
  39. // : (random = Math.random() * range[0] + 0);
  40. // return Math.round(random);
  41. // }
  42. // greetAll
  43. // function greetAll(...anybody) {
  44. // return alert("Hello " + anybody.join(", "));
  45. // }
  46. // sum
  47. // function sum(...numbers) {
  48. // alert(numbers.reduce((a, b) => a + b));
  49. // }
  50. // Union
  51. // let sample = prompt("Введите название задания");
  52. // switch (sample.toLowerCase()) {
  53. // case "a":
  54. // a("Hello");
  55. // break;
  56. // case "cube":
  57. // cube(2);
  58. // break;
  59. // case "avg2":
  60. // avg2(5, 5);
  61. // break;
  62. // case "sum3":
  63. // sum3(1, 2, 3);
  64. // break;
  65. // case "intrandom":
  66. // intRandom(10);
  67. // break;
  68. // case "greetall":
  69. // greetAll("Superman", "SpiderMan", "Captain Obvious");
  70. // break;
  71. // case "sum":
  72. // sum(10, 20, 30, 100);
  73. // break;
  74. // default:
  75. // alert("Введённое задание не найдено");
  76. // }
  77. // Union declarative
  78. // let sampleDec = prompt("Введите название задания").toLowerCase();
  79. // const tasks = {
  80. // a: a("Hello"),
  81. // cube: cube(2),
  82. // avg2: avg2(5, 5),
  83. // sum3: sum3(1, 2, 3),
  84. // intrandom: intRandom(10),
  85. // greetall: greetAll("Superman", "SpiderMan", "Captain Obvious"),
  86. // sum: sum(10, 20, 30, 100),
  87. // };
  88. // tasks[sampleDec];
  89. // ДЗ: Функции 2, ES6
  90. // a - simplified
  91. // let aSim = (text) => alert(text);
  92. // cube - simplified
  93. // let cubeSim = (num = 1) => (Number.isNaN(+num) ? "Error" : num ** 3);
  94. // avg2 - simplified
  95. // let avg2Sim = (a, b) =>
  96. // !Number.isNaN(+a) &&
  97. // !Number.isNaN(+b) &&
  98. // typeof +a === "number" &&
  99. // typeof +b === "number"
  100. // ? ((a + b) / 2).toFixed(1)
  101. // : "Error";
  102. // sum && sum3 - simplified
  103. // let sumSim = (...arguments) => arguments.reduce((a, b) => a + b);
  104. // intRandom - simplified
  105. // let intRandomSim = (...range) => {
  106. // let random;
  107. // if (range[0] === range[1] && range[0] < 0 && range[1] < 0) {
  108. // return range[0];
  109. // }
  110. // range.length > 1
  111. // ? (random = Math.random() * range[1] + range[0])
  112. // : (random = Math.random() * range[0] + 0);
  113. // return Math.round(random);
  114. // };
  115. // greetAll - simplified
  116. // let greetAllSim = (...anybody) => alert("Hello " + anybody.join(", "));
  117. // sort
  118. // const persons = [
  119. // { name: "Иван", age: 17 },
  120. // { name: "Мария", age: 35 },
  121. // { name: "Алексей", age: 73 },
  122. // { name: "Яков", age: 12 },
  123. // ];
  124. // function sort(obj, field, asc = true) {
  125. // if (asc) {
  126. // for (let i = 0, endI = obj.length - 1; i < endI; i++) {
  127. // for (let j = 0, endJ = endI - i; j < endJ; j++) {
  128. // if (obj[j][field] > obj[j + 1][field]) {
  129. // let swap = obj[j];
  130. // obj[j] = obj[j + 1];
  131. // obj[j + 1] = swap;
  132. // }
  133. // }
  134. // }
  135. // } else {
  136. // for (let i = 0, endI = obj.length - 1; i < endI; i++) {
  137. // for (let j = 0, endJ = endI - i; j < endJ; j++) {
  138. // if (obj[j][field] < obj[j + 1][field]) {
  139. // let swap = obj[j];
  140. // obj[j] = obj[j + 1];
  141. // obj[j + 1] = swap;
  142. // }
  143. // }
  144. // }
  145. // }
  146. // return obj;
  147. // }
  148. // console.log(sort(persons, "age", false));
  149. // array map
  150. // const arrayMap = ["1", {}, null, undefined, "500", 700];
  151. // const newArrayMap = arrayMap.map((value) =>
  152. // typeof +value === "number" && value !== null && !Number.isNaN(+value)
  153. // ? +value
  154. // : value
  155. // );
  156. // console.log(newArrayMap);
  157. // array reduce
  158. // const arrayReduce = ["0", 5, 3, "string", null];
  159. // const resultArrayReduce = arrayReduce.reduce(function (prev, curr) {
  160. // if (typeof curr === "number") {
  161. // prev *= curr;
  162. // }
  163. // return prev;
  164. // }, 1);
  165. // console.log(resultArrayReduce);
  166. // object filter
  167. // const phone = {
  168. // brand: "meizu",
  169. // model: "m2",
  170. // ram: 2,
  171. // color: "black",
  172. // };
  173. // function filter(obj, func) {
  174. // const newObj = {};
  175. // for (let [key, value] of Object.entries(obj)) {
  176. // if (func(key, value)) {
  177. // newObj[key] = value;
  178. // }
  179. // }
  180. // return newObj;
  181. // }
  182. // console.log(filter(phone, (key, value) => key == "color" || value == 2));
  183. // object map
  184. // const person = {
  185. // name: "Иван",
  186. // age: 17,
  187. // };
  188. // function map(obj, func) {
  189. // let newObj = {};
  190. // for (let [key, value] of Object.entries(obj)) {
  191. // if (func(key, value)) {
  192. // newObj[key] = { ...func(key, value) };
  193. // }
  194. // }
  195. // let result = {};
  196. // for (let key in newObj) {
  197. // result = Object.assign(result, newObj[key]);
  198. // }
  199. // return result;
  200. // }
  201. // console.log(
  202. // map(person, function (key, value) {
  203. // let result = {};
  204. // result[key + "_"] = value + "$";
  205. // return result;
  206. // })
  207. // );
  208. // Рекурсия
  209. // Sum
  210. // function recSum(n) {
  211. // if (n < 1) return 1;
  212. // return n + recSum(n - 1);
  213. // }
  214. // console.log(recSum(5));
  215. // HTML Tree
  216. // const someTree = {
  217. // tagName: "table",
  218. // subTags: [
  219. // {
  220. // tagName: "tr",
  221. // subTags: [
  222. // {
  223. // tagName: "td",
  224. // text: "some text",
  225. // content: "Text",
  226. // },
  227. // {
  228. // tagName: "td",
  229. // text: "some text 2",
  230. // content: "Text",
  231. // },
  232. // ],
  233. // },
  234. // ],
  235. // attrs: {
  236. // border: 1,
  237. // },
  238. // };
  239. // let constructor = "";
  240. // function recConstr(tree) {
  241. // if (tree.tagName) {
  242. // constructor += `<${tree.tagName} ${
  243. // tree.attrs ? [...Object.keys(tree.attrs)] + "=" : ""
  244. // }${
  245. // tree.attrs ? "'" + [...Object.values(tree.attrs)] + "'" : ""
  246. // } class='obj${
  247. // tree.tagName.slice(0, 1).toUpperCase() + tree.tagName.slice(1)
  248. // }'>`;
  249. // tree.content ? (constructor += `${tree.content}`) : "";
  250. // if (tree.subTags) {
  251. // for (let i = 0; i < tree.subTags.length; i++) {
  252. // recConstr({ ...tree.subTags[i] });
  253. // }
  254. // }
  255. // constructor += `</${tree.tagName}>`;
  256. // return constructor;
  257. // } else {
  258. // return "Error";
  259. // }
  260. // }
  261. // document.write(recConstr(someTree));