|
| 1 | +/* |
| 2 | +TASK 0. Найдите числа которые повторяются нечетное количество раз |
| 3 | +в массиве |
| 4 | + solution([12, 23, 34, 12, 12, 23, 12, 45]) -> [34 45] |
| 5 | + solution([4, 4, 100, 5000, 4, 4, 4, 4, 4, 100, 100,]) -> [4 100 5000] |
| 6 | + solution([3, 3, 4, 6, 4, 5, 9, 9, 21, 9]) -> [6 5 9 21] |
| 7 | + solution([4, 8, 15, 16, 23, 42, 4, 15, 42, 42]) -> [8 16 23 42] |
| 8 | + solution([2, 2, 44, 44]) => [] |
| 9 | +*/ |
| 10 | + |
| 11 | +let solution = (arr) => { |
| 12 | + let counter = {}; |
| 13 | + arr.forEach(num => { |
| 14 | + counter[num] ? counter[num]++ : counter[num] = 1; |
| 15 | + }); |
| 16 | + const counterKeys = Object.keys(counter); |
| 17 | + const counterValues = Object.values(counter); |
| 18 | + |
| 19 | + let output = new Set(); |
| 20 | + |
| 21 | + counterValues.forEach((num, index) => { |
| 22 | + if(num === 1) { |
| 23 | + output.add(counterKeys[index]) |
| 24 | + } |
| 25 | + if(num % 2 !== 0) { |
| 26 | + output.add(counterKeys[index]); |
| 27 | + } |
| 28 | + }); |
| 29 | + |
| 30 | + return output; |
| 31 | +}; |
| 32 | + |
| 33 | +console.log(solution([12, 23, 34, 12, 12, 23, 12, 45])); |
| 34 | +console.log(solution([4, 4, 100, 5000, 4, 4, 4, 4, 4, 100, 100,])); |
| 35 | +console.log(solution([3, 3, 4, 6, 4, 5, 9, 9, 21, 9])); |
| 36 | +console.log(solution([4, 8, 15, 16, 23, 42, 4, 15, 42, 42])); |
| 37 | +console.log(solution([2, 2, 44, 44])); |
| 38 | + |
| 39 | +//----------------------------------------------------------- |
| 40 | + |
| 41 | +const someWebpackModule = `module.exports = { |
| 42 | + context: %%HOMEDIR%, |
| 43 | + entry: { |
| 44 | + app: "%%HOMEDIR%%/%%APP_DIR%%/%%APPNAME%%.js" |
| 45 | + }, |
| 46 | + output: { |
| 47 | + path: %%HOMEDIR%% + '/app', |
| 48 | + filename: "dist/[%%APPNAME%%].js", |
| 49 | + library: '[%%APPNAME%%]' |
| 50 | + } |
| 51 | + }`; |
| 52 | + |
| 53 | +/* TASK - 1 |
| 54 | +Распарсите строку и замените |
| 55 | + %%HOMEDIR%% -> './JavaScript-Basic' |
| 56 | + %%APP_DIR%% -> 'fixtures/src' |
| 57 | + %%APPNAME%% -> 'app.js' |
| 58 | + Вам нужно написать функцию которая в зависимости от разных параметров |
| 59 | + будет изменять заданные значения на необходимые вам |
| 60 | + Сделайте несколько вызовов данной функции |
| 61 | + * |
| 62 | + * */ |
| 63 | + |
| 64 | +const parseStr = str => { |
| 65 | + const correctStr = str.replace(/%%HOMEDIR%./gmi, '"./JavaScript-Basic"').replace(/%%APP_DIR%%/gmi, 'fixtures/src').replace(/%%APPNAME%%/gmi, 'app.js').replace(/module.exports = /, '').replace(/'/gmi, '"').replace(/""/gmi, '"'); |
| 66 | + return correctStr; |
| 67 | +} |
| 68 | + |
| 69 | +console.log(parseStr(someWebpackModule)); |
| 70 | + |
| 71 | +/* |
| 72 | + TASK - 2 |
| 73 | + Сделайте разметку как скриншоте используя HTML |
| 74 | + вам необходимо использовать тэги(!) |
| 75 | +*/ |
| 76 | + |
| 77 | +const task2 = true; |
| 78 | + |
| 79 | + |
| 80 | +/* |
| 81 | +TASK 3 |
| 82 | + JavaScript => |
| 83 | + Создать объект с методами, которые будут динамически генерировать DOM |
| 84 | + Это будет тест, который мы будем разрабатывать в следующих заданиях. |
| 85 | + Сейчас вам нужно только динамически создать html, |
| 86 | + методы должны храниться в одном объекте. |
| 87 | + Изначально на странице должен быть только <body>, |
| 88 | + вызывая методы объекта нужно создать dom-элементы |
| 89 | +*/ |
| 90 | + |
| 91 | +const quizz = { |
| 92 | + create() { |
| 93 | + const wraper = document.createElement('div'); |
| 94 | + const quizzBlock = document.createElement('div'); |
| 95 | + const quizTitle = document.createElement('header'); |
| 96 | + const quizzFooter = document.createElement('footer'); |
| 97 | + const quizzList = document.createElement('ol'); |
| 98 | + |
| 99 | + wraper.setAttribute('class', 'wraper'); |
| 100 | + quizzBlock.setAttribute('class', 'quizz-block'); |
| 101 | + quizzList.setAttribute('class', 'quizz-list'); |
| 102 | + quizTitle.setAttribute('class', 'quizz-title'); |
| 103 | + quizTitle.textContent = 'Test of Programming'; |
| 104 | + |
| 105 | + const questionTitles = ['What is the best program language?', 'What is your name?', 'What is the best car?']; |
| 106 | + const answers = [ |
| 107 | + ['JS', 'JavaScript', 'HTML'], |
| 108 | + ['Vasya', 'Petr', 'Vitya'], |
| 109 | + ['Lada Sedan', 'Juguli', 'Priora'] |
| 110 | + ]; |
| 111 | + |
| 112 | + function fillQuizzList() { |
| 113 | + for(let i = 0; i < questionTitles.length; i++) { |
| 114 | + const li = document.createElement('li'); |
| 115 | + const header = document.createElement('header'); |
| 116 | + const main = document.createElement('main'); |
| 117 | + |
| 118 | + li.setAttribute('class', 'question-block'); |
| 119 | + header.setAttribute('class', 'question-title'); |
| 120 | + main.setAttribute('class', 'question-body'); |
| 121 | + header.textContent = questionTitles[i]; |
| 122 | + |
| 123 | + for(let j = 0; j < answers[i].length; j++) { |
| 124 | + const label = document.createElement('label'); |
| 125 | + const input = document.createElement('input'); |
| 126 | + const p = document.createElement('p'); |
| 127 | + |
| 128 | + label.setAttribute('class', 'answer'); |
| 129 | + p.textContent = answers[i][j]; |
| 130 | + input.setAttribute('type', 'checkbox'); |
| 131 | + label.appendChild(input); |
| 132 | + label.appendChild(p); |
| 133 | + main.appendChild(label); |
| 134 | + } |
| 135 | + |
| 136 | + li.appendChild(header); |
| 137 | + li.appendChild(main); |
| 138 | + quizzList.appendChild(li); |
| 139 | + } |
| 140 | + } |
| 141 | + fillQuizzList(); |
| 142 | + |
| 143 | + function fillQuizzFooter() { |
| 144 | + const span = document.createElement('span'); |
| 145 | + quizzFooter.setAttribute('class', 'quizz-footer'); |
| 146 | + span.setAttribute('class', 'check-answers btn-shadow-effect'); |
| 147 | + span.textContent = 'Check Answers'; |
| 148 | + quizzFooter.appendChild(span); |
| 149 | + } |
| 150 | + fillQuizzFooter(); |
| 151 | + |
| 152 | + quizzBlock.appendChild(quizTitle); |
| 153 | + quizzBlock.appendChild(quizzList); |
| 154 | + quizzBlock.appendChild(quizzFooter); |
| 155 | + |
| 156 | + wraper.appendChild(quizzBlock); |
| 157 | + |
| 158 | + document.body.appendChild(wraper); |
| 159 | + } |
| 160 | +} |
| 161 | + |
| 162 | +quizz.create(); |
0 commit comments