1+ // Отобразите достаточно ли у developers навыков ?
2+ // Отобразите всех разработчиков и вызовете у каждого
3+ // разработчика метод goodDev --
4+
5+ /*
6+ * Количество требований к разработчику совпадает с его навыками.
7+ * Используйте в задаче this
8+ * */
9+
10+ let developer1 = {
11+ skills : [ 'JavaScript' , 'linux' , 'html' , 'OOP' , 'Node.js' ] ,
12+ requirements : [ 'Node.js' , 'JavaScript' , 'OOP' ] ,
13+ goodDev : goodDev
14+ } ;
15+ let developer2 = {
16+ experience : [
17+ { technology : 'java' } ,
18+ { technology : 'c++' } ,
19+ { technology : 'aws' } ,
20+ { technology : 'docker' }
21+ ] ,
22+ requirements : [ 'java' , 'json' , 'c++' , 'JavaScript' ] ,
23+ goodDev : goodDev
24+ } ;
25+
26+ function sortArray ( a , b ) {
27+ if ( a > b ) return 1 ;
28+ if ( a < b ) return - 1 ;
29+ }
30+
31+ function goodDev ( dev ) {
32+
33+ if ( this . skills && this . requirements ) {
34+ const skillsArray = this . skills . sort ( sortArray ) ;
35+ const requirementsArray = this . requirements . sort ( sortArray ) ;
36+
37+ skillsArray . forEach ( ( elem , index ) => {
38+ const requireElem = requirementsArray [ index ] ;
39+ if ( elem === requireElem ) {
40+ const successNotification = `${ elem } ... success` ;
41+ return console . log ( successNotification ) ;
42+ } else {
43+ const failNotification = `${ elem } ... fail` ;
44+ return console . log ( failNotification ) ;
45+ }
46+ } ) ;
47+ console . log ( `---------------` ) ;
48+ }
49+
50+ if ( this . experience && this . requirements ) {
51+ const experienceArrayWithObjects = this . experience ;
52+ const emptyArray = [ ] ;
53+ experienceArrayWithObjects . forEach ( ( elem , index , arr ) => {
54+ const getAObjectfromExperience = arr [ index ] ;
55+ const valueOfKey = Object . values ( getAObjectfromExperience ) ;
56+ const transformValueToString = valueOfKey . join ( '' ) ;
57+ emptyArray . push ( transformValueToString ) ;
58+ } ) ;
59+
60+ const requirements = this . requirements ;
61+ const concatArrays = emptyArray . concat ( requirements ) ;
62+ const checkOnCommonSkills = concatArrays . sort ( sortArray ) ;
63+
64+ checkOnCommonSkills . forEach ( ( elem , index , arr ) => {
65+ const nextElem = arr [ index + 1 ] ;
66+ const lastElem = arr [ index - 1 ] ;
67+
68+ if ( elem === nextElem ) {
69+ const successNotification = `${ elem } ... success` ;
70+ return console . log ( successNotification ) ;
71+ } else if ( elem !== nextElem && elem !== lastElem ) {
72+ const failNotification = `${ elem } ... fail` ;
73+ console . log ( failNotification ) ;
74+ }
75+ } ) ;
76+ console . log ( `---------------` ) ;
77+ }
78+ }
79+
80+ developer1 . goodDev ( ) ;
81+
82+ // developer 1
83+ // required: Node.js ... success
84+ // required: JavaScript ... success
85+ // required: OOP ... success
86+ // ---
87+
88+ developer2 . goodDev ( ) ;
89+
90+ // developer 2
91+ // required: json ... fail
92+ // required: JavaScript ... success
93+ // required: Java ... success
94+ // required: OOP ... success
95+
96+ /*
97+ *
98+ * TASK 2
99+ *
100+ *
101+ * Напишите функцию принимает 1 аргумент сортирует объект по
102+ * переданному значению (например age или name)
103+ *
104+ * При вызове функции используйте this
105+ *
106+ * */
107+
108+ let myObject = {
109+ database : [
110+ { age : 100 , name : 'b' } ,
111+ { age : 15 , name : 'c' } ,
112+ { age : 25 , name : 'a' }
113+ ]
114+ } ;
115+
116+ function compareAge ( a , b ) {
117+ if ( a . age > b . age ) return 1 ;
118+ if ( a . age < b . age ) return - 1 ;
119+ }
120+ function compareName ( a , b ) {
121+ if ( a . name > b . name ) return 1 ;
122+ if ( a . name < b . name ) return - 1 ;
123+ }
124+
125+ myObject . myFilter = function ( param ) {
126+
127+ if ( param === `age` ) {
128+ const sortDatabase = this . database . sort ( compareAge ) ;
129+ return sortDatabase ;
130+ }
131+ if ( param === `name` ) {
132+ const sortDatabase2 = this . database . sort ( compareName ) ;
133+ return sortDatabase2 ;
134+ }
135+
136+ } ;
137+
138+ // {age:15, name:'c'}, {age:25, name:'a'} {age:100, name:'b'}
139+ myObject . myFilter ( 'age' ) ;
140+
141+ // {age:25, name:a}, {age:100, name: b} ...
142+ myObject . myFilter ( 'name' ) ;
143+
144+
145+ /*
146+ * TASK 3
147+ *
148+ * Перепишите homework 5 с использованием методов массивов и
149+ * => arrow functions
150+ *
151+ */
152+
153+ let arr1 = [ 1 , false , 2 , 0 , 3 , null , 0 , 4 , 0 , 25 ] ;
154+ let arr2 = [
155+ 'a' ,
156+ 0 ,
157+ 0 ,
158+ 'b' ,
159+ null ,
160+ 'c' ,
161+ 'd' ,
162+ 0 ,
163+ 1 ,
164+ false ,
165+ 0 ,
166+ 1 ,
167+ 0 ,
168+ 3 ,
169+ [ ] ,
170+ 0 ,
171+ 1 ,
172+ 9 ,
173+ 0 ,
174+ 0 ,
175+ { } ,
176+ 0 ,
177+ 0 ,
178+ 9
179+ ] ;
180+
181+ const moveZeroToEnd = ( arr ) => {
182+
183+ let oldArrayWithoutZero = [ ] ;
184+ let newArray = [ ] ;
185+
186+ for ( let i = 0 ; i < arr . length ; i ++ ) {
187+ const elemOfArr = arr [ i ] ;
188+
189+ if ( elemOfArr !== 0 ) {
190+ oldArrayWithoutZero . push ( elemOfArr ) ;
191+ }
192+
193+ if ( elemOfArr === 0 ) {
194+ newArray . push ( elemOfArr ) ;
195+ }
196+ }
197+ return console . log ( oldArrayWithoutZero . concat ( newArray ) ) ;
198+ }
199+
200+ const compareNumeric = ( a , b ) => {
201+ if ( a > b ) return 1 ;
202+ if ( a < b ) return - 1 ;
203+ }
204+
205+ const minimalNumber = ( arr ) => {
206+ arr . sort ( compareNumeric ) ;
207+ return arr [ 0 ] + arr [ 1 ] ;
208+ }
209+
210+ const nameShuffler = ( str ) => {
211+
212+ let transformStrToArray = str . split ( ' ' ) ;
213+ let reverseTheArray = transformStrToArray . reverse ( ) ;
214+ let transformStrToString = reverseTheArray . join ( ' ' ) ;
215+
216+ return transformStrToString ;
217+ }
218+
219+ const capMe = ( arr ) => {
220+
221+ for ( let i = 0 ; i < arr . length ; i ++ ) {
222+ let elemOfArray = arr [ i ] ;
223+ let valueOfElemToLowerCase = elemOfArray . toLowerCase ( ) ;
224+ let divideOnArray = valueOfElemToLowerCase . split ( '' ) ;
225+ let firstLetterToUpperCase = divideOnArray [ 0 ] . toUpperCase ( ) ;
226+ divideOnArray . shift ( ) ;
227+ divideOnArray . unshift ( firstLetterToUpperCase ) ;
228+ let joinUp = divideOnArray . join ( '' ) ;
229+ arr [ i ] = joinUp ;
230+ }
231+ return arr ;
232+ }
233+
234+
235+ ////// @ TODO -- LVL Strong Junior
236+
237+ /*
238+ *
239+ * TASK 1
240+ * Напишите функцию которая принимает 3 аргумента:*
241+ *
242+ * - объект к которому привязывается метод
243+ * - Имя свойства с которым связывается метод
244+ * - Объявление привязываемого метода( функция )
245+ *
246+ * Если количество аргументов у функции fn совпадает с переданными
247+ * параметрами тогда сохраняет метод в замыкании
248+ * и привязывает функцию к методу объекта
249+ *
250+ * при вызове одного и того же метода с разным количеством аргументов,
251+ * должно давать различный результат
252+ *
253+ * */
254+
255+ //let junior = {};
256+ //
257+ //// fn.length == arguments.length
258+ //
259+ //function addMethod(object, name, fn) {
260+ //
261+ //}
262+ //
263+ //addMethod(junior, 'ok', function() {
264+ // console.log('zero arguments');
265+ //});
266+ //addMethod(junior, 'ok', function(one) {
267+ // console.log('one arguments');
268+ //});
269+ //addMethod(junior, 'ok', function(one, two) {
270+ // console.log('two arguments');
271+ //});
272+ //addMethod(junior, 'ok', function(one, two, three) {
273+ // console.log('three arguments');
274+ //});
275+ //
276+ //junior.ok(1, 2, 3); // 'three arguments'
277+ //junior.ok(1, 2); // 'two arguments'
278+ //junior.ok(1); //'one arguments'
279+ //junior.ok(); //'zero arguments'
0 commit comments