Skip to content

Commit ee04060

Browse files
committed
[LES-8.1/st-compl] intro-to-arrays
Practice with "arrays", working with [i], "at()" method, ...spread. Worth noting: - alternative solution in task 2. FS-dev: B-3 / JS basic
1 parent 224362b commit ee04060

File tree

1 file changed

+67
-0
lines changed
  • full-stack-dev/3-js-basic/8-arrays/8-1-intro-to-arrays

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// Задание 1:
2+
// Напиши функцию addUser(users, newUser).
3+
// Что она делает: Принимает массив имён users (например, ['Анна', 'Виктор']) и новое имя newUser (например, 'Светлана').
4+
// Что возвращает: Функция должна вернуть новый массив, в котором будут все старые пользователи и новый пользователь в конце.
5+
// Самое важное условие: Оригинальный массив users после вызова функции не должен измениться.
6+
7+
const users = ['Анна', 'Виктор'];
8+
let newUser = 'Светлана';
9+
10+
function addUser(users, newUser) {
11+
return [...users, newUser];
12+
}
13+
14+
console.log(addUser(users, newUser)); // [ 'Анна', 'Виктор', 'Светлана' ]
15+
console.log(users); // [ 'Анна', 'Виктор' ]
16+
17+
// Задание 2:
18+
// Напиши функцию getTicketInfo(tickets, ticketNumber).
19+
// Что она делает: Принимает массив с номерами билетов tickets (например, ['T-1', 'T-2', 'T-3', 'T-4']) и ticketNumber — порядковый номер билета, который нужно найти.
20+
// Особенность: Если ticketNumber — положительное число, оно означает номер с начала (1 — первый, 2 — второй и т.д.). Если ticketNumber — отрицательное, оно означает номер с конца (-1 — последний, -2 — предпоследний).
21+
// Что возвращает: Строку с информацией. Если билет найден, то "Билет ... найден". Если такого номера нет (например, в массиве 4 билета, а ищут 5-й), то "Билет не найден".
22+
// Подсказка: Подумай, как метод at() может упростить эту задачу.
23+
// Пример вызова:
24+
// getTicketInfo(['T-1', 'T-2', 'T-3', 'T-4'], -2) должен вернуть "Билет T-3 найден".
25+
// getTicketInfo(['T-1', 'T-2'], 3) должен вернуть "Билет не найден".
26+
27+
function getTicketInfo(tickets, ticketNumber) {
28+
if (tickets.at(ticketNumber) !== undefined) {
29+
return `Билет ${tickets.at(ticketNumber)} найден!`;
30+
} else {
31+
return `Билет не найден..`;
32+
}
33+
}
34+
35+
console.log(getTicketInfo(['T-1', 'T-2', 'T-3', 'T-4'], -2)); // Билет T-3 найден!
36+
console.log(getTicketInfo(['T-1', 'T-2', 'Т-3'], 0)); // Билет T-1 найден!
37+
console.log(getTicketInfo(['T-1', 'T-2'], 3)); // Билет не найден..
38+
39+
// ?? альтернативное решение (с учётом того, что 0 должен исключаться)
40+
function getTicketInfo(tickets, ticketNumber) {
41+
// Если номер билета 0, at() вернет первый элемент, НО по условию отсчет идет с 1, поэтому 0 считаем невалидным.
42+
if (ticketNumber === 0) {
43+
return 'Билет не найден';
44+
}
45+
46+
// Преобразуем 1-based индекс в 0-based для положительных чисел
47+
const index = ticketNumber > 0 ? ticketNumber - 1 : ticketNumber;
48+
const ticket = tickets.at(index);
49+
50+
if (ticket !== undefined) {
51+
return `Билет ${ticket} найден`;
52+
} else {
53+
return 'Билет не найден';
54+
}
55+
}
56+
57+
console.log('Поиск по отрицательному индексу (-2):');
58+
console.log(getTicketInfo(['T-1', 'T-2', 'T-3', 'T-4'], -2)); // "Билет T-3 найден"
59+
60+
console.log('\nПоиск по положительному индексу (1):');
61+
console.log(getTicketInfo(['T-1', 'T-2', 'T-3'], 1)); // "Билет T-1 найден"
62+
63+
console.log('\nПоиск по индексу 0:');
64+
console.log(getTicketInfo(['T-1', 'T-2', 'Т-3'], 0)); // "Билет не найден"
65+
66+
console.log('\nПоиск несуществующего билета (3):');
67+
console.log(getTicketInfo(['T-1', 'T-2'], 3)); // "Билет не найден"

0 commit comments

Comments
 (0)