Chuyển đến nội dung chính
Mô-đun 5 · Bài học 2 trong tổng số 418/32 trong khóa học~10 min
Bài học theo mô-đun (2/4)

cho…của và cho…trong

JavaScript có hai vòng lặp "công thái học" không nên nhầm lẫn:

  • for…of lặp lại giá trị của một bộ sưu tập có thể lặp lại (mảng, chuỗi, Tập hợp, Bản đồ...).
  • for…in lặp lại khóa có thể đếm được của một đối tượng.

Chúng là anh em họ hàng gần gũi và dễ dàng bị hoán đổi - sử dụng sai từ là một trong những sai lầm đầu tiên của ngôn ngữ. bẫy.

for…of cho mảng và chuỗi

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'
}

Nó không cung cấp cho bạn chỉ mục. Nếu bạn cũng cần chỉ mục, hãy sử dụng entries():

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

for…in cho các đối tượng

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

Khi nào KHÔNG nhầm lẫn chúng

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'
}

Hãy thử nó

tập thể dục#js.m5.l2.e1
Nỗ lực: 0Đang tải…

Xác định `concat(words)`, cho một danh sách các chuỗi, trả về một chuỗi có tất cả các chuỗi được nối với nhau, phân tách bằng dấu cách. Sử dụng cho…của.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Tích lũy thành một chuỗi; chỉ thêm khoảng trắng nếu đó không phải là từ đầu tiên.

Giải pháp khả dụng sau 3 lần thử

Xem lại bài tập

tập thể dục#js.m5.l2.e2
Nỗ lực: 0Đang tải…

Xác định `activeValues(obj)` trả về một mảng có các giá trị của đối tượng là số > 0. Sử dụng for…in. Thứ tự phải khớp với thứ tự lặp của các phím.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Lặp lại với for...in trên các phím, lọc với typeof và > 0, đẩy vào kết quả.

Giải pháp khả dụng sau 3 lần thử