Перейти к основному содержимому
Модуль 3 · Урок 4 из 412/32 в курсе~10 min
Уроки модуля (4/4)

Перебор коллекций

Манипулирование коллекциями почти всегда означает итерацию: обход элементы по одному и что-то делаем для каждого. На этом уроке мы посмотрите на основные синтаксисы; в модуле функциональные массивы (карта / filter/reduce) научимся писать их более декларативно.

for…of для массивов

Это цикл, который вы почти всегда захотите использовать для перебора массива: извлекает значение на каждом этапе.

JS
const colori = ['rosso', 'verde', 'blu'];

for (const c of colori) {
  console.log(c);
}
// 'rosso'
// 'verde'
// 'blu'

Если вам также нужен индекс, используйте entries():

JS
for (const [i, c] of colori.entries()) {
  console.log(`${i}: ${c}`);
}
// '0: rosso', '1: verde', '2: blu'

for…in для объектов — с осторожностью

for…in перебирает ключи (строки) объекта:

JS
const utente = { nome: 'Anna', eta: 28 };
for (const k in utente) {
  console.log(`${k} = ${utente[k]}`);
}

Object.keys / values / entries

Это надежный способ итерации объекта. Они возвращают массивы, и поэтому они очень хорошо сочетаются с for…of:

JS
const utente = { nome: 'Anna', eta: 28 };

Object.keys(utente); // ['nome', 'eta']
Object.values(utente); // ['Anna', 28]
Object.entries(utente); // [['nome', 'Anna'], ['eta', 28]]

for (const [k, v] of Object.entries(utente)) {
  console.log(`${k} → ${v}`);
}

Классический for

«Старая школа» for все еще существует. Вы будете использовать его редко, но это полезно когда вам нужен точный контроль над индексом (пропуск элементов, итерация наоборот):

JS
for (let i = 0; i < colori.length; i++) {
  console.log(i, colori[i]);
}

// Backwards
for (let i = colori.length - 1; i >= 0; i--) {
  console.log(colori[i]);
}

Попробуйте это

Упражнение#js.m3.l4.e1
Попыток: 0Загрузка…

Учитывая `числа = [3, 5, 7]`, вычислите сумму всех элементов (15), повторяя с помощью for...of. Последнее выражение должно возвращать сумму.

Загрузка редактора…
Показать подсказку

for (const n чисел) { sum = sum + n; }

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#js.m3.l4.e2
Попыток: 0Загрузка…

Учитывая `prices = { mela: 0,4, pera: 0,55, банан: 0,3 }`, верните ОБЩЕЕ КОЛИЧЕСТВО записей в объекте (3), используя Object.keys.

Загрузка редактора…
Показать подсказку

Object.keys(obj) возвращает массив; .length сообщает, сколько ключей имеется.

Решение доступно после 3 попыток