Skip to content

Commit 2b360ab

Browse files
committed
[LES-8.3/st-compl] searching-elements-in-array
Practice with "includes()" and "indexOf()" methods. Worth noting: - tasks 3 and 4 (note the solutions). FS-dev: B-3 / JS basic
1 parent 70573d1 commit 2b360ab

File tree

1 file changed

+96
-0
lines changed
  • full-stack-dev/3-js-basic/8-arrays/8-3-searching-elements-in-array

1 file changed

+96
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
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

Comments
 (0)