Skip to content

Commit 20505d8

Browse files
committed
[REC-11/st-compl] arrays-iterations, 2-nd
Solving 4 tasks. Working with "filter/map(), reduce(), Array.from()". Worth noting: - all this tasks (note the solutions). FS-dev: B-3 / JS basic
1 parent e1341cb commit 20505d8

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed

full-stack-dev/3-js-basic/11-arrays-iterations/recall/recall.js renamed to full-stack-dev/3-js-basic/11-arrays-iterations/recall/1-first/recall.js

File renamed without changes.
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
'use strict';
2+
3+
// Задание 1:
4+
// Как бы ты, используя связку (chaining) filter() и map(), получил новый массив, содержащий только имена (name) активных (isActive: true) пользователей?
5+
// Ожидаемый результат: ['Alex', 'Bob']
6+
7+
const users = [
8+
{ id: 1, name: 'Alex', isActive: true },
9+
{ id: 2, name: 'Jane', isActive: false },
10+
{ id: 3, name: 'Bob', isActive: true },
11+
{ id: 4, name: 'Kate', isActive: false },
12+
];
13+
14+
const activeUsers = users
15+
.filter((user) => user.isActive === true)
16+
.map((user) => user.name);
17+
18+
console.log(activeUsers); // [ 'Alex', 'Bob' ]
19+
20+
// Задание 2:
21+
// Используя только метод reduce(), преобразуй этот массив в объект, где ключом будет id товара, а значением — его name.
22+
// Подсказка: Не забудь про initialValue для reduce()! Каким он должен быть, если мы хотим на выходе получить объект?
23+
// Ожидаемый результат:
24+
/*
25+
{
26+
'p-001': 'Laptop',
27+
'p-002': 'Mouse',
28+
'p-003': 'Keyboard'
29+
}
30+
*/
31+
32+
const products = [
33+
{ id: 'p-001', name: 'Laptop', price: 1200 },
34+
{ id: 'p-002', name: 'Mouse', price: 25 },
35+
{ id: 'p-003', name: 'Keyboard', price: 75 },
36+
];
37+
38+
const productsId = products.reduce((acc, product) => {
39+
acc[product.id] = product.name;
40+
return acc;
41+
}, {});
42+
43+
// альтернативный "иммутабельный" способ
44+
// const productsId = products.reduce((acc, product) => {
45+
// return { ...acc, [product.id]: product.name };
46+
// }, {});
47+
48+
console.log(productsId); // { 'p-001': 'Laptop', 'p-002': 'Mouse', 'p-003': 'Keyboard' }
49+
50+
// Задание 3:
51+
// Используя только Array.from() (и его аргументы), создай массив из первых 5 чётных чисел, начиная с 0.
52+
// Подсказка: Тебе нужно будет передать в Array.from() "массивоподобный" объект ({ length: 5 }) в качестве первого аргумента и map-функцию в качестве второго.
53+
// Ожидаемый результат: [0, 2, 4, 6, 8]
54+
55+
const evenArr = Array.from({ length: 5 }, (_, index) => index * 2);
56+
console.log(evenArr); // [ 0, 2, 4, 6, 8 ]
57+
58+
// Задание 4:
59+
// Напиши код, который использует метод some(), чтобы проверить, есть ли в массиве хотя бы одна "подозрительная" транзакция.
60+
// "Подозрительная" транзакция — это та, у которой type равен 'debit' И amount больше 1000.
61+
// Код должен вывести в консоль true или false.
62+
63+
const transactions = [
64+
{ id: 't1', amount: 50, type: 'debit' },
65+
{ id: 't2', amount: 200, type: 'credit' },
66+
{ id: 't3', amount: 1500, type: 'debit' },
67+
{ id: 't4', amount: 300, type: 'credit' },
68+
];
69+
70+
const isDebit = transactions.some(
71+
(transaction) => transaction.type === 'debit' && transaction.amount > 1000
72+
);
73+
74+
console.log(isDebit); // true

0 commit comments

Comments
 (0)