123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- // ------------------------------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 = $('<div>').prependTo('body');
- function recursiveTree(arr, place) {
- place = place || 'body';
- var $ul =$('<ul>').appendTo(place);
- for(var i=0; i < arr.length; i++){
- if ( typeof arr[i] !== "object") {
- $('<li>').text(arr[i]).appendTo($ul);
- }else {
- recursiveTree(arr[i], $ul);
- }
- }
- }
- recursiveTree(data, $item);
- // ------------------------------5--------------------------------------
- // Напишите функцию, которая изображает в теге HTML картинку по данным, представляющим из себя двумерный массив закрашенных точек.
- var cat = [
- [2, 3, 4],
- [1, 2, 8, 15],
- [0, 1, 8, 9, 14, 15],
- [0, 1, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15],
- [0, 1, 3, 4, 5, 6, 8, 11, 12, 15],
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 15],
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15],
- [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14],
- [1, 2, 3, 6, 7, 11, 12],
- [1, 2, 6, 7],
- [1, 2, 3, 4, 6, 7, 8],
- [1, 2, 3, 4, 6, 7, 8]
- ];
- var $item = $('<table>').css({'margin' : 'auto', 'background' : '#fff', 'border-collapse' : 'collapse', 'border-spacing' : 0}).prependTo('body');
- for (var i = 0; i < cat.length; i++) {
- var $tr = $('<tr>').appendTo($item);
- for (var j = 0, k=0; (j < 16) || (k < cat[i].length); j++) {
- if (j == cat[i][k]) {
- k++;
- $('<td>').css({'background' : '#000', 'height' : '40px', 'width' : '40px'}).appendTo($tr);
- }else
- $('<td>').css({'border' : '1px solid #000', 'height' : '40px', 'width' : '40px'}).appendTo($tr);
- }
- }
|