// 1. Напишите функцию, которая возвращает массив, очищенный от пустых значений, не меняя исходный // var data = [0, '0', '', null, {}, [], [1, 2, 3]]; // console.log( clean(data) ); // [0, '0', null, [1, 2, 3]] function clean(arr) { var newArray = []; for (var i = 0; i < arr.length; i++) { if (arr[i] != '' && arr[i] != {} && arr[i] != [] ) { newArray.push(arr[i]); } } return newArray; } var data = [0, '0', '', null, {}, [], [1, 2, 3]]; console.log( clean(data) ); // 2. Напишите функцию-аналог splice, не используя никакие методы массива. // var arr = [1, 2, 4, 3]; // console.log(splice(arr, 2, 1)); // [4] // console.log(arr); // [1, 2, 3] // splice(arr, 2, 0, 100, 200, 300); // console.log(arr); // [1, 2, 100, 200, 300, 3] function splice(arr, start, del) { var result = []; start = (start < 0) ? arr.length + start : start; for (var i = 0; i < start; i++) { result[i] = arr[i]; } if (arguments.length > 3) { for (var i = 3; i < arguments.length; i++) { result[result.length] = arguments[i]; } } for (var i = start + del; i < arr.length; i++) { result[result.length] = arr[i]; } return result; } var arr = [1, 2, 4, 3]; console.log(splice(arr, 2, 1)); console.log(arr); splice(arr, 2, 0, 100, 200, 300); console.log(arr); // 3. Напишите функцию, которая возвращает сумму всех чисел, переданных в качестве аргументов, число которых // не ограничено. Функция работает только с числами (включая строковые). Если какой-то из параметров - // массив, то к сумме добавляется также сумма значений этого массива (если какое-либо из значений этого // массива также является массивом, то к результату добавляется также и сумма его значений, и так далее). // var sum = getSum(1, '1', 'one', [2, '2', 'two']); // console.log( sum ); // 6 function getSum() { var arr = [].slice.apply(arguments); function sumRecursion(arr) { return arr.reduce(function (sum, elem) { if ( isNumber(elem) ) sum += +elem; else if ( Array.isArray(elem) ) sum += sumRecursion(elem); return sum; }, 0); } return sumRecursion(arr); } function isNumber(val) { return !isNaN(parseFloat(val)) && isFinite(val); } var sum = getSum(1, '1', 'one', [2, '2', 'two']); console.log( sum ); // 4. Напишите функцию, которая рисует в указанном HTML-контейнере диаграмму из данных, представляющих из // себя массив объектов: каждый объект имеет свойства color и value, означающих соответственно цвет столбца // и его высоту. // var data1 = [ {color: '#DE9797', value: 70}, ... ]; // buildDiagram(data1, '#diagram1'); // var data2 = [ {color: '#97DEDA', value: 20}, ... ]; // buildDiagram(data2, '#diagram2'); function buildDiagram(arr, target) { var array = arr; for (var i = 0; i < arr.length; i++) { var colum = ('
').css( hight : arr[i].value color : arr[i].color ) } } var data1 = [ {color: '#DE9797', value: 70}, {color: 'red', value: 50}, {color: 'pink', value: 30}]; buildDiagram(data1, '#diagram1'); // 5.Напишите функцию, которая изображает в теге HTML картинку по данным, представляющим из себя двумерный массив закрашенных точек. // var points = [ // [3, 4, 5], // [2, 3, 9, 16], // [1, 2, 9, 10, 15, 16], // ... // ]; $(document).ready(function(){ $("td").css({ "width": "10px", "height": "10px", "border": "0.1px solid #999" }); $("table").css({ "border-spacing": "0px" }); var points = [ [3,4,5], [2,3,9,16], [1,2,9,10,15,16], [1,2,5,6,9,10,11,12,13,14,15,16], [1,2,4,5,6,7,9,12,13,16], [1,2,3,4,5,6,7,8,9,12,13,16], [2,3,4,5,6,7,8,9,10,11,14,15,16], [2,3,4,5,6,7,8,10,11,12,13,14,15], [2,3,4,7,8,12,13], [2,3,7,8], [2,3,4,5,7,8,9], [2,3,4,5,7,8,9] ]; function kub(arr) { for (var i =0; i < arr.length; i++) { arr[i].forEach(function(item){ $("tr:nth-child("+ +(i+1)+") > td:nth-child("+item+")").css({ "background": "black" }); }); } } kub(points); })