Модуль 9 · Урок 35

Arrays, iteration methods і immutable pipelines

Array method обирають за потрібним результатом: transform, subset, first match, Boolean check або aggregation. Readable pipeline має pure callbacks, явний comparator/accumulator і не змінює source без задокументованої причини.

map / filterfind / some / everyreducetoSorted

Contract кожного method

MethodПовертаєТипова роль
mapНовий array тієї самої lengthTransform/project
filterНовий subset arrayKeep by predicate
findПерший value або undefinedSingle lookup
some/everyBooleanExistence/universal check
reduceAccumulatorAggregation з 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.

Офіційні джерела

Практична перевірка · урок 35 з 60

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що повертає Array.isArray([])?
2. Який contract map?
3. Який contract filter?