// ------------------------------1-------------------------------------- // Напишите функцию, которая в объекте меняет местами ключи и значения: var obj = { 'name': 'John', 'email': 'john@mail.com' }; function reverse(val) { obj = val; for (var key in obj) { obj[obj[key]] = key; delete obj[key] ; } return obj; } reverse(obj); console.log(obj); // {'John': 'name', 'john@mail.com': 'email'} // ------------------------------2-------------------------------------- // Напишите функцию-аналог splice, не используя никакие методы массива: // var arr = [1, 2, 4, 3]; // arr = splice(arr, 2, 1); // console.log(arr); // [1, 2, 3] // arr = splice(arr, 2, 0, 100, 200, 300); // console.log(arr); // [1, 2, 100, 200, 300, 3] var arr = [1, 2, 4, 3, 6, 7, 9, 8]; function splice(arr) { var arrArguments = []; for (i=0; i < arguments.length; i++) { arrArguments[i] = arguments[i]; } // debugger; if (arrArguments[2] >= 1) { for (var i = 0, j = 0, nwarr = []; j < (arr.length - arrArguments[2]) + (arrArguments.length - 3); i++, j++) { nwarr[j] = arr[i]; if ( (i == arrArguments[1]) && (arrArguments.length > 3) ) { nwarr[j] = arrArguments[3]; for (a = 4, b = 0; b < arrArguments.length - 3;a++, b++) { j++; nwarr[j] = arrArguments[a]; } } if (i == arrArguments[1]) { nwarr[j] = arr[i+(arr.length - (arr.length - arrArguments[2]) )]; i= i + (arr.length - (arr.length - arrArguments[2]) ); } } }else if (arrArguments[2] == 0) { for (var i = 0, j = 0, nwarr = []; j < (arr.length - arrArguments[2]) + (arrArguments.length - 4); i++, j++) { nwarr[j] = arr[i]; if (i == arrArguments[1]) { nwarr[j] = arrArguments[3]; for (var a=4; a < arrArguments.length; a++) { j++; nwarr[j] = arrArguments[a]; } } } } arr = nwarr; return console.log(arr); } splice(arr, 2, 4); splice(arr, 2, 4, 599, 377, 5, 7777); splice(arr, 2, 0, 100, 200, 300); // ------------------------------3-------------------------------------- // Напишите функцию, которая возвращает сумму всех чисел, переданных в качестве аргументов, // число которых не ограничено. Функция работает только с числами (включая строковые). // Если какой-то из параметров - массив, то к сумме добавляется также сумма значений этого массива // (если какое-либо из значений этого массива также является массивом, то к результату добавляется // также и сумма его значений, и так далее). // var sum = getSum(1, '1', 'one', [2, '2', 'two']); // console.log( sum ); // 6 function sum() { var summ = 0; for(var i=0; i < arguments.length; i++){ if (isFinite(arguments[i])) { summ+= +arguments[i]; }else if (arguments[i] instanceof Array ) { summ += sum.apply(null, arguments[i]) } } return summ; } console.log( sum(1, '1', 'one', [2, '2', [2, '2', 'two'], 'two'], 1, 4, [2, '2', 'two'], 7) ); // ------------------------------4-------------------------------------- // Напишите функцию, которая отрисовывает древовидный список ul li из предоставленной структуры любой глубины вложенности. // Где рисовать меню определяется в параметрах функции, если DOM-элемент не был передан, то дерево рисуется в body: // var data = [1, [21, 22, 23], 3, [41, [421, 422]], 5]; // recursiveTree(data); <--------самое злое задание, время выполнения 100500 часов var data = [1, [21, 22, 23], 3, [41, [421, 422]], 5]; var $item = $('
').css({'background' : '#000', 'height' : '40px', 'width' : '40px'}).appendTo($tr); }else $(' | ').css({'border' : '1px solid #000', 'height' : '40px', 'width' : '40px'}).appendTo($tr); } } |