Skip to content

Commit 1acc7a3

Browse files
authored
Merge pull request #9 from EasyCode-JavaScriptReact-v1/homework_7
homework_7
2 parents be38ff9 + a18994b commit 1acc7a3

File tree

2 files changed

+234
-0
lines changed

2 files changed

+234
-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 7</title>
6+
</head>
7+
<body>
8+
9+
<script src="src/main.js"></script>
10+
</body>
11+
</html>
Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
//Task1
2+
function add(arg1) {
3+
return function (arg2) {
4+
return function (arg3) {
5+
return arg1 = arg1 + arg2 + arg3;
6+
};
7+
};
8+
};
9+
10+
console.log('Task1 ', add(1)(2)(3)); // 6
11+
console.log('Task1 ', add(10)(5)(15)); // 30
12+
13+
14+
15+
//Task2
16+
function patternModule() {
17+
let count = 0;
18+
return {
19+
method: function () {
20+
return count += 1;
21+
},
22+
setToZero: function() {
23+
return count = 0;
24+
}
25+
};
26+
};
27+
28+
//patternModule
29+
30+
let test = patternModule(); // 0
31+
console.log('Task2 ', test.method()); //1
32+
console.log('Task2 ', test.method()); //2
33+
console.log('Task2 ', test.method()); //3
34+
console.log('Task2 ', test.setToZero());
35+
console.log('Task2 ', test.method());
36+
37+
38+
39+
40+
//Task3
41+
let jun = {};
42+
43+
function methodCounter(obj, name, num, fn) {
44+
let counter = 0;
45+
obj[name] = function(...args) {
46+
if(counter < num) {
47+
counter += 1;
48+
return `Call number ${counter}, sum of arguments = ${fn(args)}`;
49+
} else {
50+
return 'ERROR ! add more methods';
51+
}
52+
}
53+
};
54+
55+
methodCounter(jun, 'logger', 2, function (args) {
56+
let sumArgs = 0;
57+
for (let i = 0; i < args.length; i++) {
58+
sumArgs = sumArgs + args[i];
59+
};
60+
return sumArgs;
61+
});
62+
63+
console.log('Task3 ', jun.logger(1, 2, 3, 4)); // 2, 10
64+
console.log('Task3 ', jun.logger(5, 5, 5, 5)); // 1, 20
65+
console.log('Task3 ', jun.logger(5, 5)); // ERROR ! add more methods
66+
67+
//Super
68+
let jun2 = {};
69+
70+
function methodCounter2(obj, name, num, fn) {
71+
let counter = num;
72+
obj[name] = function(...args) {
73+
if(counter > 0) {
74+
counter--;
75+
return `Call number ${counter + 1}, sum of arguments = ${fn(args)}`;
76+
} else {
77+
return 'ERROR ! add more methods';
78+
};
79+
};
80+
obj.addCounter = function(initialCounter) {
81+
return counter = initialCounter;
82+
};
83+
};
84+
85+
let methodName = methodCounter2(jun2, 'logger', 2, function (args) {
86+
let sumArgs = 0;
87+
for (let i = 0; i < args.length; i++) {
88+
sumArgs = sumArgs + args[i];
89+
};
90+
return sumArgs;
91+
});
92+
console.log('Super ', jun2.addCounter(10, methodName));
93+
console.log('Super ', jun2.logger(1, 2, 3, 4));
94+
console.log('Super ', jun2.logger(1, 2, 3, 4));
95+
console.log('Super ', jun2.logger(1, 2, 3, 4));
96+
console.log('Super ', jun2.logger(1, 2, 3, 4));
97+
console.log('Super ', jun2.logger(1, 2, 3, 4));
98+
console.log('Super ', jun2.logger(1, 2, 3, 4));
99+
console.log('Super ', jun2.logger(1, 2, 3, 4));
100+
console.log('Super ', jun2.logger(1, 2, 3, 4));
101+
console.log('Super ', jun2.logger(1, 2, 3, 4));
102+
console.log('Super ', jun2.logger(1, 2, 3, 4));
103+
console.log('Super ', jun2.logger(1, 2, 3, 4));
104+
console.log('Super ', jun2.logger(1, 2, 3, 4));
105+
console.log('Super ', jun2.addCounter(3, methodName));
106+
console.log('Super ', jun2.logger(1, 2, 3, 4));
107+
console.log('Super ', jun2.logger(1, 2, 3, 4));
108+
console.log('Super ', jun2.logger(1, 2, 3, 4));
109+
console.log('Super ', jun2.logger(1, 2, 3, 4));
110+
111+
//Задачи:
112+
113+
function factorial(n) {
114+
if(n > 1) {
115+
return n * factorial(n - 1);
116+
};
117+
return n
118+
};
119+
console.log(factorial(5));
120+
121+
122+
function sumToRecursion(n) {
123+
if(n > 1) {
124+
return n + factorial(n - 1);
125+
};
126+
return n;
127+
};
128+
console.log(sumToRecursion(4));
129+
130+
131+
132+
function sumToCycle(n) {
133+
let k = n;
134+
for (let i = 1; i < k; i++) {
135+
n = n + (k - i);
136+
};
137+
return n;
138+
};
139+
console.log(sumToCycle(4));
140+
141+
142+
143+
function sum (arg1) {
144+
return function (arg2) {
145+
return arg1 + arg2;
146+
};
147+
};
148+
console.log(sum(5)(-1));
149+
150+
151+
152+
function makeBuffer() {
153+
let buffer = '';
154+
return function (value) {
155+
if(value == undefined) {
156+
return buffer;
157+
};
158+
return buffer = buffer + value;
159+
};
160+
};
161+
let buffer = makeBuffer();
162+
console.log(buffer(1));
163+
console.log(buffer(2));
164+
console.log(buffer(3));
165+
console.log(buffer());
166+
167+
168+
169+
170+
function makeBuffer2() {
171+
let buff = '';
172+
function buffer2 (value) {
173+
if(value == undefined) {
174+
return buff;
175+
};
176+
return buff = buff + value;
177+
};
178+
buffer2.clear = function () {
179+
buff = '';
180+
};
181+
return buffer2;
182+
};
183+
let buffer2 = makeBuffer2();
184+
185+
buffer2("Тест");
186+
buffer2(" тебя не съест ");
187+
console.log( buffer2() ); // Тест тебя не съест
188+
189+
buffer2.clear();
190+
console.log( buffer2() );
191+
192+
193+
194+
195+
let users = [{
196+
name: "Вася",
197+
surname: 'Иванов',
198+
age: 20
199+
}, {
200+
name: "Петя",
201+
surname: 'Чапаев',
202+
age: 25
203+
}, {
204+
name: "Маша",
205+
surname: 'Медведева',
206+
age: 18
207+
}];
208+
209+
function byField(field) {
210+
return function (a, b) {
211+
return a[field] > b[field]? 1: -1;
212+
};
213+
};
214+
215+
users.sort(byField('name'));
216+
users.forEach(function(user) {
217+
console.log( user.name );
218+
}); // Вася, Маша, Петя
219+
220+
users.sort(byField('age'));
221+
users.forEach(function(user) {
222+
console.log( user.name );
223+
}); // Маша, Вася, Петя

0 commit comments

Comments
 (0)