|
| 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