// 1. Напишите функцию, которая возвращает массив, // очищенный от пустых значений, не меняя исходный var arr = [0, '0', '', null, {}, [], [1, 2, 3]], arr2 = []; function clean(arr) { for(var i = 0; i < arr.length; i++) { if (arr[i] !== "") { if (Array.isArray(arr[i])) { if (arr[i].length !== 0) { arr2.push(arr[i]); } } else if (arr[i] in arr || arr[i] == null) { arr2.push(arr[i]); } } } return arr2; }; clean(arr); // 2. Напишите функцию-аналог splice, // не используя никакие методы массива. var arr1 = ['Привет', 'как', 'дела?'], arr2 = []; function newSplice(arr, index, deleteCount, ...elements) { if (elements.length == 0) { for(var i = 0; i < arr.length; i++) { if (arr.indexOf(arr[i]) < index || arr.indexOf(arr[i]) > index + deleteCount - 1) { arr2[arr2.length] = arr[i]; } }; return arr2; } else { var c = 0; for(var i = 0; i < arr.length; i++) { if (i >= index && i <= index+deleteCount-1) { arr[i] = elements[c++]; } } } return arr; }; newSplice(arr1, 1, 1); // 3. Напишите функцию, которая возвращает сумму всех чисел, // переданных в качестве аргументов, число которых не ограничено. // Функция работает только с числами (включая строковые). // Если какой-то из параметров - массив, то к сумме добавляется // также сумма значений этого массива (если какое-либо из значений // этого массива также является массивом, то к результату // добавляется также и сумма его значений, и так далее). function sum() { 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 = sum(1, '1', 'one', [2, '2', 'two']); console.log( sum ); // 4. Напишите функцию, которая рисует в указанном HTML-контейнере // диаграмму из данных, представляющих из себя массив объектов: // каждый объект имеет свойства color и value, означающих соответственно // цвет столбца и его высоту. function buildDiagram(obj, diag) { }; var data1 = [ {color: '#DE9797', value: 70}]; buildDiagram(data1, '#diagram1'); var data2 = [ {color: '#97DEDA', value: 20}]; buildDiagram(data2, '#diagram2'); // 5. Напишите функцию, которая изображает в теге HTML картинку // по данным, представляющим из себя двумерный массив // закрашенных точек. $(document).ready(function() { $("td").css({ "width": "10px", "height": "10px", "border": "1px solid #555" }); $("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 draw(arr) { // arr = [][]; for(var i = 0; i < arr.length; i++) { // var tr = document.querySelector("tr:nth-child("+i+")"); arr[i].forEach(function(item) { $("tr:nth-child("+ +(i+1)+") > td:nth-child("+item+")").css({ "background": "black" }); }); } }; draw(points); });