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

для… из и для… в

В JavaScript есть два «эргономичных» цикла, которые не следует путать:

  • for…of перебирает значения повторяемой коллекции (массив, строка, набор, карта...).
  • for…in перебирает перечисляемые ключи объекта.

Они близкие родственники, и их легко заменить — использование неправильного варианта — одна из первых особенностей языка. ловушки.

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

JS
const colori = ['rosso', 'verde', 'blu'];
for (const c of colori) {
  console.log(c); // 'rosso', 'verde', 'blu'
}

for (const ch of 'abc') {
  console.log(ch); // 'a', 'b', 'c'
}

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

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

for…in для объектов

JS
const utente = { nome: 'Anna', eta: 30, citta: 'Roma' };
for (const chiave in utente) {
  console.log(chiave, utente[chiave]); // 'nome' 'Anna', ...
}

Когда НЕ следует их путать

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

// SBAGLIATO: stampa gli indici come stringhe!
for (const x in colori) {
  console.log(x); // '0', '1', '2'
}

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

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

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

Определите `concat(words)`, который по заданному списку строк возвращает строку, в которой все они объединены, разделенные пробелом. Используйте для… из.

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

Накопить в строку; добавляйте пробел только в том случае, если это не первое слово.

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

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

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

Определите `positiveValues(obj)`, который возвращает массив со значениями объекта, которые являются числами > 0. Используйте for…in. Порядок должен соответствовать порядку итерации ключей.

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

Прокрутите for...in по клавишам, отфильтруйте с помощью typeof и > 0, введите результаты.

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