Модуль 9 · Урок 35
Arrays, iteration methods і immutable pipelines
Array method обирають за потрібним результатом: transform, subset, first match, Boolean check або aggregation. Readable pipeline має pure callbacks, явний comparator/accumulator і не змінює source без задокументованої причини.
Contract кожного method
| Method | Повертає | Типова роль |
|---|---|---|
map | Новий array тієї самої length | Transform/project |
filter | Новий subset array | Keep by predicate |
find | Перший value або undefined | Single lookup |
some/every | Boolean | Existence/universal check |
reduce | Accumulator | Aggregation з explicit initial value |
Array.isArray відрізняє array від object. Empty semantics важливі: some([]) false, every([]) true; reduce без initial value на empty array кидає error.
Mutation boundary
const sorted = books.toSorted((a, b) =>
a.title.localeCompare(b.title, 'uk')
);sort() змінює source array; toSorted() створює shallow copy. Обидва підходи не deep-clone items. Comparator має повертати negative/zero/positive і бути deterministic; Boolean comparator є дефектним контрактом.
Pipeline, який читається
const cards = rawBooks
.map(normalizeBook)
.filter(isValidBook)
.filter(matchesCategory)
.toSorted(compareByTitle)
.map(toCardModel);Коли chain приховує intent або повторно проходить дуже великий dataset без потреби, звичайний loop може бути яснішим. Мета — correctness і maintainability, не максимальна кількість methods.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.