Skip to content

Commit e46d64e

Browse files
committed
[REC-9/st-compl] cycles, 2-nd
Solving 4 task. Working with "for/for...of(), while(), shift()". Worth noting: - all this tasks (note the solutions). FS-dev: B-3 / JS basic
1 parent 7d61034 commit e46d64e

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

full-stack-dev/3-js-basic/9-cycles/recall/recall.js renamed to full-stack-dev/3-js-basic/9-cycles/recall/1-first/recall.js

File renamed without changes.
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
'use strict';
2+
3+
// Задание 1:
4+
// У тебя есть массив, содержащий другие массивы с числами:
5+
/*
6+
const numberMatrix = [
7+
[1, 5, 10],
8+
[100, 20, 3],
9+
[40, 50]
10+
];
11+
*/
12+
// Используя только циклы for...of (один вложенный в другой), напиши код, который найдет и выведет в консоль сумму всех чисел во всех вложенных массивах.
13+
// (В данном случае ожидаемый результат в консоли: 229)
14+
15+
const numberMatrix = [
16+
[1, 5, 10],
17+
[100, 20, 3],
18+
[40, 50],
19+
];
20+
21+
let matrixSum = 0;
22+
23+
for (const subArr of numberMatrix) {
24+
for (const num of subArr) {
25+
matrixSum += num;
26+
}
27+
}
28+
29+
console.log(matrixSum); // 229
30+
31+
// Задание 2:
32+
// У тебя есть массив, представляющий очередь задач на обработку: const tasks = [10, 20, 30, 40, 50, 60];
33+
// Тебе нужно "обработать" (удалить) задачи из начала этого массива, одну за другой.
34+
// Правила:
35+
// 1. Используй цикл while.
36+
// 2. Условием цикла должно быть tasks.length > 0 (т.е. цикл работает, "пока в массиве есть задачи").
37+
// 3. Внутри цикла "обрабатывай" задачу, удаляя ее из начала массива (для этого есть метод .shift(), который удаляет и возвращает первый элемент).
38+
// 4. На каждой итерации выводи в консоль "Обработана задача: [номер задачи]".
39+
// 5. Важное условие: Если ты "натыкаешься" на задачу с номером 40, ты должен немедленно прекратить всю обработку (используй break), не выводя сообщение о её обработке.
40+
/*
41+
Ожидаемый вывод в консоли:
42+
Обработана задача: 10
43+
Обработана задача: 20
44+
Обработана задача: 30
45+
*/
46+
47+
const tasks = [10, 20, 30, 40, 50, 60];
48+
49+
while (tasks.length > 0) {
50+
let currentTask = tasks.shift();
51+
52+
if (currentTask === 40) {
53+
break;
54+
}
55+
56+
console.log(`Обработана задача: ${currentTask}`); // Обработана задача: 10, Обработана задача: 20, Обработана задача: 30..
57+
}
58+
59+
// Задание 3:
60+
// Напиши код, который выводит в консоль "прямоугольный треугольник" из звёздочек.
61+
// Правила:
62+
// 1. Задай константу const height = 5;.
63+
// 2. Используй вложенные циклы for (классические, со счётчиками i и j).
64+
// 3. Внешний цикл (по i) отвечает за строки (от 1 до height).
65+
// 4. Внутренний цикл (по j) отвечает за количество звёздочек в строке.
66+
// 5. Вспомни "основополагающий момент" из файла Вывод_звёздочек...pdf: чтобы звёздочки накапливались правильно для каждой строки, нужно на каждой итерации внешнего цикла (по i) создавать заново "пустую" строку (например, let starLine = '';).
67+
/*
68+
Ожидаемый вывод в консоли:
69+
*
70+
**
71+
***
72+
****
73+
*****
74+
*/
75+
76+
const height = 5;
77+
78+
for (let i = 1; i <= height; i++) {
79+
let starLine = '';
80+
81+
for (let j = 0; j < i; j++) {
82+
starLine += '*';
83+
}
84+
85+
console.log(starLine);
86+
}
87+
88+
// Задание 4:
89+
// У тебя есть массив const data = [1, 5, 9, 13, 10, 4, 2];
90+
// Напиши код, который найдет первый элемент с конца массива, который меньше 5.
91+
// Правила:
92+
// 1. Ты должен использовать классический цикл for, который итерирует массив в обратном порядке (т.е. с декрементом i--).
93+
// 2. Как только ты находишь первый же элемент, который < 5, ты должен:
94+
// - Вывести его в консоль.
95+
// - Немедленно остановить цикл (используя break).
96+
97+
const data = [1, 5, 9, 13, 10, 99, 7];
98+
99+
for (let i = data.length - 1; i >= 0; i--) {
100+
if (data[i] < 5) {
101+
console.log(data[i]); // 1
102+
break;
103+
}
104+
}

0 commit comments

Comments
 (0)