Skip to content

Commit f936922

Browse files
Balashov NikitaOlegLustenko
authored andcommitted
homework-9 without TODO
1 parent d2eea5e commit f936922

File tree

2 files changed

+290
-0
lines changed

2 files changed

+290
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Home work 9</title>
6+
</head>
7+
<body>
8+
9+
<script src="src/main.js"></script>
10+
</body>
11+
</html>
Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
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

Comments
 (0)