// 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 = ('