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 goodDev ( ) {
27+ if ( this . skills ) {
28+ this . requirements . forEach ( elem => {
29+ if ( this . skills . indexOf ( elem ) == - 1 ) {
30+ console . log ( `required ${ elem } ... fail` )
31+ } else {
32+ console . log ( `required ${ elem } ... success` )
33+ }
34+ } ) ;
35+ }
36+ if ( this . experience ) {
37+ let exp = this . experience
38+ let devSkills = exp . reduce ( ( newValue , elem ) => {
39+ return newValue . concat ( Object . values ( elem ) )
40+ } , [ ] )
41+ this . requirements . forEach ( elem => {
42+ if ( devSkills . indexOf ( elem ) === - 1 ) {
43+ console . log ( `required ${ elem } ... fail` )
44+ } else {
45+ console . log ( `required ${ elem } ... success` )
46+ }
47+ } )
48+ }
49+ }
50+
51+ console . log ( developer1 . goodDev ( ) )
52+ console . log ( developer2 . goodDev ( ) )
53+
54+
55+ // developer 1
56+ // required: Node.js ... success
57+ // required: JavaScript ... success
58+ // required: OOP ... success
59+ // ---
60+
61+ // developer 2
62+ // required: json ... fail
63+ // required: JavaScript ... success
64+ // required: Java ... success
65+ // required: OOP ... success
66+
67+ /*
68+ *
69+ * TASK 2
70+ *
71+ *
72+ * Напишите функцию принимает 1 аргумент сортирует объект по
73+ * переданному значению (например age или name)
74+ *
75+ * При вызове функции используйте this
76+ *
77+ * */
78+
79+ let myObject = {
80+ database : [
81+ { age : 100 , name : 'b' } ,
82+ { age : 15 , name : 'c' } ,
83+ { age : 25 , name : 'a' }
84+ ]
85+ } ;
86+
87+
88+ myObject . myFilter = function ( param ) {
89+ let prop = [ ...this . database ] ;
90+ return prop . sort ( ( a , b ) => a [ param ] > b [ param ] )
91+ } ;
92+
93+ // {age:15, name:'c'}, {age:25, name:'a'} {age:100, name:'b'}
94+ console . log ( myObject . myFilter ( 'age' ) ) ;
95+
96+ // {age:25, name:a}, {age:100, name: b} ...
97+ console . log ( myObject . myFilter ( 'name' ) ) ;
98+
99+
100+ /*
101+ * TASK 3
102+ *
103+ * Перепишите homework 5 с использованием методов массивов и
104+ * => arrow functions
105+ *
106+ */
107+
108+ // ////// @ TODO -- LVL Strong Junior
109+
110+ // /*
111+ // *
112+ // * TASK 1
113+ // * Напишите функцию которая принимает 3 аргумента:*
114+ // *
115+ // * - объект к которому привязывается метод
116+ // * - Имя свойства с которым связывается метод
117+ // * - Объявление привязываемого метода( функция )
118+ // *
119+ // * Если количество аргументов у функции fn совпадает с переданными
120+ // * параметрами тогда сохраняет метод в замыкании
121+ // * и привязывает функцию к методу объекта
122+ // *
123+ // * при вызове одного и того же метода с разным количеством аргументов,
124+ // * должно давать различный результат
125+ // *
126+ // * */
127+
128+ let junior = { } ;
129+
130+ // fn.length == arguments.length
131+
132+ function addMethod ( object , name , fn ) {
133+
134+ }
135+
136+ addMethod ( junior , 'ok' , function ( ) {
137+ console . log ( 'zero arguments' ) ;
138+ } ) ;
139+ addMethod ( junior , 'ok' , function ( one ) {
140+ console . log ( 'one arguments' ) ;
141+ } ) ;
142+ addMethod ( junior , 'ok' , function ( one , two ) {
143+ console . log ( 'two arguments' ) ;
144+ } ) ;
145+ addMethod ( junior , 'ok' , function ( one , two , three ) {
146+ console . log ( 'three arguments' ) ;
147+ } ) ;
148+
149+ junior . ok ( 1 , 2 , 3 ) ; // 'three arguments'
150+ junior . ok ( 1 , 2 ) ; // 'two arguments'
151+ junior . ok ( 1 ) ; //'one arguments'
152+ junior . ok ( ) ; //'zero arguments'
0 commit comments