script-for-index.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. // For Table
  2. // Оформите задание For Multiply Table как функцию, которая принимает любой массив с массивами, а возвращает
  3. // строку HTML с тэгом <table> и всякими tr и td.
  4. for_table: {
  5. const arr = [
  6. [0, 0, 0, 0, 0],
  7. [0, 1, 2, 3, 4],
  8. [0, 2, 4, 6, 8],
  9. [0, 3, 6, 9, 12],
  10. [0, 4, 8, 12, 16]];
  11. const forTable = (arr) => {
  12. let str = "<table style = 'border-collapse: collapse; border: 1px solid; text-align: center; margin: 20px 0 20px;'>";
  13. for (let index of arr.keys()) {
  14. if (index % 2 == 0) {
  15. str += "<tr style='background-color: #babfc4;'>";
  16. } else {
  17. str += "<tr style='background-color: #fcb450;'>";
  18. }
  19. for (let number of arr[index]) {
  20. str += `<td style = 'border-collapse: collapse; border: 1px solid; width: 30px; height: 30px;'>${number}</td>`;
  21. }
  22. str += "</tr>";
  23. }
  24. str += "</table>";
  25. return str;
  26. }
  27. document.write(forTable(arr));
  28. }
  29. // Form
  30. // Оформите задание Form как функцию, которая принимает любой объект как параметр и создает форму на экране.
  31. form: {
  32. const car = {
  33. "Name": "chevrolet chevelle malibu",
  34. "Cylinders": 8,
  35. "Displacement": 307,
  36. "Horsepower": 130,
  37. "Weight_in_lbs": 3504,
  38. "Origin": "USA",
  39. "in_production": false
  40. }
  41. const form = (obj) => {
  42. let string = "<form style='display: flex; flex-direction: column;'>";
  43. for (let value of Object.keys(car)) {
  44. let type;
  45. if (typeof (car[value]) == 'number') {
  46. type = 'number';
  47. } else if (typeof (car[value]) == 'string') {
  48. type = 'text';
  49. } else if (typeof (car[value]) == 'boolean') {
  50. type = 'checkbox';
  51. }
  52. string += `<label style='margin-bottom: 16px;'>
  53. ${value.slice(0, 1).toUpperCase() + value.slice(1).toLowerCase().replaceAll("_", " ")}
  54. <input type ="${type}" value="${car[value]}"/>
  55. </label>`;
  56. }
  57. string += "</form>";
  58. document.write(string);
  59. }
  60. form(car);
  61. }
  62. // Table
  63. // Оформите задание Table как функцию, которая принимает следующие параметры:
  64. // любой массив объектов для отображения
  65. // поле, по которому сортировать
  66. // порядок сортировки (убывание/возрастание)
  67. // Перед отображением:
  68. // скопируйте исходный массив, что бы сортировка не изменила оригинал;
  69. // отсортируйте с помощью функции из предыдущего задания
  70. // Отображение возьмите из задания Table
  71. table: {
  72. const persons = [
  73. {
  74. name: 'Мария',
  75. fatherName: 'Ивановна',
  76. surname: 'Иванова',
  77. sex: 'female'
  78. },
  79. {
  80. name: 'Николай',
  81. fatherName: 'Иванович',
  82. surname: 'Иванов',
  83. age: 15
  84. },
  85. {
  86. name: 'Петр',
  87. fatherName: 'Иванович',
  88. surname: 'Иванов',
  89. married: true
  90. },
  91. ]
  92. const byField = (arr, fieldName, isAscending) => {
  93. let objSort = (a, b) => {
  94. if (a[fieldName] > b[fieldName]) {
  95. return isAscending || isAscending == undefined ? 1 : -1;
  96. } else if (a[fieldName] < b[fieldName]) {
  97. return isAscending || isAscending == undefined ? -1 : 1;
  98. } else {
  99. return 0;
  100. }
  101. }
  102. let sortedArr = arr.slice().sort(objSort);
  103. return sortedArr;
  104. }
  105. const table = (arr, fieldName, isAscending) => {
  106. let sortedArr = byField(arr, fieldName, isAscending);
  107. let ColumnArr = [];
  108. for (let item of sortedArr) {
  109. for (let key of Object.keys(item)) {
  110. if (!ColumnArr.includes(key)) {
  111. ColumnArr.push(key);
  112. }
  113. }
  114. }
  115. let str = "<table style = 'border-collapse: collapse; border: 1px solid gray; text-align: center; margin-bottom: 20px'><tr>";
  116. for (ColumnName of ColumnArr) {
  117. str += `<th style = 'border-collapse: collapse; border: 1px solid gray; background-color: #d3d3d3; padding: 10px'>${ColumnName}</th>`;
  118. }
  119. str += "</tr>";
  120. for (let item of sortedArr) {
  121. str += "<tr>";
  122. for (let ColumnName of ColumnArr) {
  123. str += `<td style = 'border-collapse: collapse; border: 1px solid gray; padding: 10px'>${item[ColumnName] || ''}</td>`;
  124. }
  125. str += "</tr>";
  126. }
  127. str += "</table>"
  128. document.write(str);
  129. }
  130. table(persons, "name", false);
  131. }