|
| 1 | +// Задание 1: |
| 2 | +// Напиши функцию canJoinClub(name, memberList). |
| 3 | +// Функция принимает два аргумента: name (имя, строка) и memberList (список участников, массив). |
| 4 | +// 1. Она должна проверять, есть ли name в memberList. |
| 5 | +// 2. Функция должна вернуть true, если имя есть в списке, и false, если его нет. |
| 6 | +// Используй для решения метод includes(), так как он наиболее читаем для этой задачи. |
| 7 | + |
| 8 | +const clubMembers = ['Peter', 'Kate', 'John']; |
| 9 | + |
| 10 | +function canJoinClub(name, memberList) { |
| 11 | + return memberList.includes(name); |
| 12 | +} |
| 13 | + |
| 14 | +console.log(canJoinClub('John', clubMembers)); // true |
| 15 | +console.log(canJoinClub('Alice', clubMembers)); // false |
| 16 | + |
| 17 | +// Задание 2: |
| 18 | +// Напиши функцию getTicketInfo(passengerName, passengerList). |
| 19 | +// - Функция принимает passengerName (имя пассажира) и passengerList (список пассажиров в вагоне). |
| 20 | +// - Если пассажир есть в списке, функция должна вернуть строку: "Пассажир [имя] сидит на месте #[номер места].". Номер места — это индекс + 1 (ведь в жизни мы считаем места с 1, а не с 0). |
| 21 | +// - Если пассажира в списке нет, функция должна вернуть строку: "Пассажира с именем [имя] в списке нет." |
| 22 | +// Используй для решения метод indexOf(), так как нам важна позиция элемента. |
| 23 | + |
| 24 | +const passengers = ['Frodo', 'Sam', 'Pippin', 'Merry']; |
| 25 | + |
| 26 | +function getTicketInfo(passengerName, passengerList) { |
| 27 | + let passengerSeat = passengerList.indexOf(passengerName); |
| 28 | + |
| 29 | + if (passengerSeat >= 0) { |
| 30 | + return `Пассажир '${passengerName}' сидит на месте #${passengerSeat + 1}.`; |
| 31 | + } else { |
| 32 | + return `Пассажира с именем '${passengerName}' в списке нет.`; |
| 33 | + } |
| 34 | +} |
| 35 | + |
| 36 | +console.log(getTicketInfo('Sam', passengers)); // Пассажир 'Sam' сидит на месте #2. |
| 37 | +console.log(getTicketInfo('Aragorn', passengers)); // Пассажира с именем 'Aragorn' в списке нет. |
| 38 | + |
| 39 | +// Задание 3: |
| 40 | +// Напиши функцию findFirstTwo(item, array). |
| 41 | +// - Функция ищет первое и второе вхождение элемента item в массиве array. |
| 42 | +// - Она должна вернуть массив с двумя элементами: [индекс_первого, индекс_второго]. |
| 43 | +// - Если элемент найден только один раз, вторым значением в массиве должен быть -1. |
| 44 | +// - Если элемент вообще не найден, оба значения должны быть -1. |
| 45 | +// Используй indexOf() дважды: сначала для поиска первого вхождения, а затем, используя второй параметр (fromIndex), для поиска второго. |
| 46 | + |
| 47 | +const letters = ['A', 'B', 'C', 'B', 'D', 'A', 'B']; |
| 48 | + |
| 49 | +function findFirstTwo(item, array) { |
| 50 | + const indexArr = []; |
| 51 | + |
| 52 | + indexArr.push(array.indexOf(item)); |
| 53 | + |
| 54 | + if (indexArr[0] >= 0) { |
| 55 | + indexArr.push(array.indexOf(item, indexArr[0] + 1)); |
| 56 | + } else { |
| 57 | + indexArr.push(-1); |
| 58 | + } |
| 59 | + |
| 60 | + return indexArr; |
| 61 | +} |
| 62 | + |
| 63 | +console.log(findFirstTwo('A', letters)); // [ 0, 5 ] |
| 64 | +console.log(findFirstTwo('C', letters)); // [ 2, -1 ] |
| 65 | +console.log(findFirstTwo('X', letters)); // [ -1, -1 ] |
| 66 | + |
| 67 | +// Задание 4: |
| 68 | +// Напиши функцию findAllOccurrences(item, array). |
| 69 | +// - Функция принимает item (что ищем) и array (где ищем). |
| 70 | +// - Она должна найти все вхождения item в array и вернуть новый массив с их индексами. |
| 71 | +// - Если элемент не найден ни разу, функция должна вернуть пустой массив []. |
| 72 | +// Подсказка: тебе понадобится indexOf() в цикле, и ты будешь использовать его второй аргумент (fromIndex), чтобы не находить один и тот же элемент снова и снова. |
| 73 | + |
| 74 | +const scores = [10, 25, 10, 5, 30, 10, 15]; |
| 75 | + |
| 76 | +function findAllOccurrences(item, array) { |
| 77 | + const occurrencesArr = []; |
| 78 | + let currentIndex = 0; |
| 79 | + |
| 80 | + while (true) { |
| 81 | + const foundIndex = array.indexOf(item, currentIndex); |
| 82 | + |
| 83 | + if (foundIndex === -1) { |
| 84 | + break; |
| 85 | + } |
| 86 | + |
| 87 | + occurrencesArr.push(foundIndex); |
| 88 | + currentIndex = foundIndex + 1; |
| 89 | + } |
| 90 | + |
| 91 | + return occurrencesArr; |
| 92 | +} |
| 93 | + |
| 94 | +console.log(findAllOccurrences(10, scores)); // [ 0, 2, 5 ] |
| 95 | +console.log(findAllOccurrences(5, scores)); // [ 3 ] |
| 96 | +console.log(findAllOccurrences(99, scores)); // [] |
0 commit comments