123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- // 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);
- });
|