script.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. // 1. Напишите функцию, которая возвращает массив,
  2. // очищенный от пустых значений, не меняя исходный
  3. var arr = [0, '0', '', null, {}, [], [1, 2, 3]],
  4. arr2 = [];
  5. function clean(arr) {
  6. for(var i = 0; i < arr.length; i++) {
  7. if (arr[i] !== "") {
  8. if (Array.isArray(arr[i])) {
  9. if (arr[i].length !== 0) {
  10. arr2.push(arr[i]);
  11. }
  12. } else if (arr[i] in arr || arr[i] == null) {
  13. arr2.push(arr[i]);
  14. }
  15. }
  16. }
  17. return arr2;
  18. };
  19. clean(arr);
  20. // 2. Напишите функцию-аналог splice,
  21. // не используя никакие методы массива.
  22. var arr1 = ['Привет', 'как', 'дела?'],
  23. arr2 = [];
  24. function newSplice(arr, index, deleteCount, ...elements) {
  25. for(var i = 0; i < arr.length; i++) { // Удаление deleteCount элементов с позиции index
  26. if (arr.indexOf(arr[i]) < index || arr.indexOf(arr[i]) > index + deleteCount - 1) {
  27. arr2[arr2.length] = arr[i];
  28. }
  29. };
  30. if (elements.length !== 0) { // Добавление элементов elements если они были заданы
  31. for(var i = 0; i < elements.length; i++) {
  32. arr2[i+index] = elements[i];
  33. }
  34. }
  35. return arr2;
  36. };
  37. newSplice(arr1, 1, 1, "все", "ок.", "Как", "сам?");
  38. // 3. Напишите функцию, которая возвращает сумму всех чисел,
  39. // переданных в качестве аргументов, число которых не ограничено.
  40. // Функция работает только с числами (включая строковые).
  41. // Если какой-то из параметров - массив, то к сумме добавляется
  42. // также сумма значений этого массива (если какое-либо из значений
  43. // этого массива также является массивом, то к результату
  44. // добавляется также и сумма его значений, и так далее).
  45. function sum() {
  46. var arr = [].slice.apply(arguments);
  47. function sumRecursion(arr) {
  48. return arr.reduce(function (sum, elem) {
  49. if ( isNumber(elem) ) {
  50. sum += +elem;
  51. } else
  52. if ( Array.isArray(elem) ) {
  53. sum += sumRecursion(elem);
  54. }
  55. return sum;
  56. }, 0);
  57. }
  58. return sumRecursion(arr);
  59. }
  60. function isNumber(val) {
  61. return !isNaN(parseFloat(val)) && isFinite(val);
  62. }
  63. var sum = sum(1, '1', 'one', [2, '2', 'two']);
  64. console.log( sum );
  65. // 4. Напишите функцию, которая рисует в указанном HTML-контейнере
  66. // диаграмму из данных, представляющих из себя массив объектов:
  67. // каждый объект имеет свойства color и value, означающих соответственно
  68. // цвет столбца и его высоту.
  69. function buildDiagram(arr, id) {
  70. var canvas = document.getElementById(id),
  71. ctx = canvas.getContext("2d"),
  72. h = canvas.clientHeight,
  73. w = 40;
  74. for(var i = 0; i < arr.length; i++) {
  75. ctx.fillStyle = arr[i].color;
  76. ctx.fillRect(i*w, h - arr[i].value, w, arr[i].value);
  77. }
  78. };
  79. var data1 = [ {color: '#DE9797', value: 70}, {color: 'red', value: 40}, {color: 'blue', value: 90}, {color: 'yellow', value: 10}, {color: 'green', value: 57}, {color: 'orange', value: 85},];
  80. buildDiagram(data1, 'diagram1');
  81. var data2 = [ {color: '#DE9797', value: 70}, {color: 'red', value: 40}, {color: 'blue', value: 90}, {color: 'yellow', value: 10}, {color: 'green', value: 57}, {color: 'orange', value: 85},];
  82. buildDiagram(data2, 'diagram2');
  83. // 5. Напишите функцию, которая изображает в теге HTML картинку
  84. // по данным, представляющим из себя двумерный массив
  85. // закрашенных точек.
  86. $(document).ready(function() {
  87. $("td").css({
  88. "width": "10px",
  89. "height": "10px",
  90. "border": "1px solid #555"
  91. });
  92. $("table").css({
  93. "border-spacing": "0px"
  94. });
  95. var points = [
  96. [3, 4, 5],
  97. [2, 3, 9, 16],
  98. [1, 2, 9, 10, 15, 16],
  99. [1, 2, 5, 6, 9, 10, 11, 12, 13, 14, 15, 16],
  100. [1, 2, 4, 5, 6, 7, 9, 12, 13, 16],
  101. [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 16],
  102. [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16],
  103. [2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15],
  104. [2, 3, 4, 7, 8, 12, 13],
  105. [2, 3, 7, 8],
  106. [2, 3, 4, 5, 7, 8, 9],
  107. [2, 3, 4, 5, 7, 8, 9],
  108. ];
  109. function draw(arr) {
  110. for(var i = 0; i < arr.length; i++) {
  111. arr[i].forEach(function(item) {
  112. $("tr:nth-child("+ +(i+1)+") > td:nth-child("+item+")").css({
  113. "background": "black"
  114. });
  115. });
  116. }
  117. };
  118. draw(points);
  119. });