script.js 4.7 KB

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