Thực hiện các thao tác lặp đi lặp lại nhiều lần dựa vào các điều kiện nhất định.

7. Câu lệnh lặp lồng nhau

Trong thực tế, có những trường hợp mà chúng ta cần có một thao tác lặp ở bên trong một thao tác lặp khác. Chẳng hạn như để vẽ một bàn cờ có các dòng và các cột, ta có thể sử dụng một vòng lặp để vẽ các dòng, và bên trong từng dòng thì ta có thể sử dụng một vòng lặp khác để vẽ các ô. Hoặc một ví dụ khác là để hiển thị bảng cửu chương, ở ví dụ phía trên chúng ta chỉ mới sử dụng một vòng lặp để hiển thị bảng tính nhân của 5, như vậy chúng ta có thể sử dụng một vòng lặp khác nữa để tính bảng tính nhân của các số khác từ 1 đến 9.

Trong những trường hợp như vậy, chúng ta đặt một vòng lặp vào bên trong một vòng lặp khác, chúng ta gọi là các vòng lặp lồng nhau.

Ví dụ:

1.	for (let i = 0; i < 5; i++){
2.	   for (let j = 0; j < 10; j++){
3.	       document.write('*');
4.	   }
5.	   document.write('<br/>');
6.	}

Kết quả:

Trong ví dụ này, vòng lặp ở ngoài tương ứng với từng dòng, vòng lặp ở trong tương ứng với từng cột. Vòng lặp ở ngoài sẽ in ra 5 dòng, và trong mỗi dòng đó vòng lặp ở trong sẽ in ra 10 ký tự.

Lưu ý: Chúng ta có thể lồng nhiều hơn 2 vòng lặp vào với nhau, không có giới hạn về số lượng vòng lặp lồng nhau. Tuy nhiên, càng nhiều vòng lặp lồng nhau thì độ phức tạp của thuật toán càng tăng. Do đó, thông thường chúng ta sẽ cố gắng làm phẳng các thuật toán để hạn chế số lượng vòng lặp lồng nhau.

8. Câu lệnh break

Trên thực tế, đôi khi thực thi một vòng lặp chúng ta không cần thiết phải thực thi đến điểm cuối cùng. Khi thỏa mãn một điều kiện nào đó chúng ta muốn thoát khỏi vòng lặp đó chúng ta sẽ sử dụng lệnh break.

Trong khi vòng lặp đang thực thi mà gặp câu lệnh break thì chương trình sẽ thoát khỏi vòng lặp đó và thực thi lệnh ngay sau vòng lặp. Nếu có nhiều vòng lặp lồng nhau thì lệnh break sẽ được áp dụng cho vòng lặp gần nhất.

Ví dụ:

1.	let message = "";
2.	let index;
3.	for (index = 0; index < 5; index++) {
4.	   if (index === 3) {
5.	       break;
6.	   }
7.	   message += "The number is " + index + "<br>";
8.	}

Kết quả hiển thị:

    The number is 0

    The number is 1

    The number is 2

Trong đoạn mã trên, câu lệnh break được thực thi khi điều kiện index === 3 được thoả mãn. Do đó, mặc dù vòng lặp của chúng ta được chạy đến 5 lần nhưng khi index bằng 3 thì nó đã thoát và không thực thi nữa. Do đó, kết quả là chỉ có 3 dòng được in ra.

9. Câu lệnh continue

Lệnh continue, thay vì kết thúc cả câu lệnh lặp như lệnh break, chỉ bỏ qua việc thực thi vòng lặp hiện tại. Lưu ý rằng nếu được sử dụng trong vòng lặp for, sau khi continue, lệnh được mô tả trong action-after-each-iteration vẫn sẽ được thực thi.

Ví dụ:

1.	let text = "";
2.	for (let i = 0; i < 10; i++) {
3.	 if (i === 3) {
4.	   continue;
5.	 }
6.	 text = text + i;
7.	}
8.	console.log(text);

Kết quả:

      “012456789”.

Để ý rằng giá trị 3 không xuất hiện trong kết quả xuất của đoạn mã bởi vì lần lặp thứ 4 (với giá trị i bằng 3) đã được bỏ qua.

Hỏi nhanh: Nếu chúng ta thay câu lệnh continue ở trên thành câu lệnh break thì kết quả sẽ là gì?

Xem tiếp>> Chuong 4 Bai thuc hanh

Có thể bạn quan tâm>> Cam nang lap trinh co ban danh cho nguoi moi bat dau