Việc thực hành bài tập về vòng lặp for trong JavaScript là phương pháp tốt nhất để rèn luyện tư duy logic thuật toán. Bạn sẽ được tiếp cận kỹ thuật duyệt mảng tối ưu, hiểu rõ về độ phức tạp thuật toán và cách kiểm soát luồng dữ liệu. Bài viết này cung cấp hệ thống bài tập từ cơ bản đến nâng cao dành cho lập trình viên muốn làm chủ ngôn ngữ JavaScript một cách chuyên sâu nhất.
Download tài liệu bài tập vòng lặpTài liệu tổng hợp bài tập thực hành JavaScript chuyên sâu cho lập trình viên.
Cơ chế thực thi và phạm vi biến trong vòng lặp for
Để giải quyết tốt các bài tập về vòng lặp for trong JavaScript, bạn cần hiểu rõ quy trình bốn bước của công cụ này. Đầu tiên là khởi tạo biến, sau đó kiểm tra điều kiện, thực thi khối lệnh và cuối cùng là cập nhật biến. Theo tiêu chuẩn ECMAScript 2023 Specification, việc sử dụng từ khóa let trong khai báo vòng lặp tạo ra một phạm vi khối (block scope) riêng biệt cho mỗi lần lặp. Điều này giúp ngăn chặn các lỗi logic nghiêm trọng liên quan đến biến toàn cục mà từ khóa var thường gặp phải trong các phiên bản cũ, vốn là chủ đề thường xuyên xuất hiện trong các câu hỏi phỏng vấn javascript.
Trong môi trường Node.js 18+ hoặc trình duyệt hiện đại, cơ chế tối ưu hóa JIT (Just-In-Time) sẽ phân tích các vòng lặp for đơn giản để chuyển đổi thành mã máy cực nhanh. Tuy nhiên, nếu bạn thay đổi cấu trúc mảng ngay bên trong vòng lặp, hiệu năng sẽ giảm sút đáng kể. Lập trình viên chuyên nghiệp luôn ưu tiên xác định trước chiều dài mảng (cache length) để đạt tốc độ xử lý tối đa khi làm việc với tập dữ liệu lớn.
Bài tập về vòng lặp for trong JavaScript mức độ cơ bản
Dưới đây là các dạng bài tập giúp bạn làm quen với cú pháp và cách điều khiển số lần lặp chính xác.
Bài tập 1: Tính tổng các số chẵn và lẻ từ 1 đến n
Yêu cầu: Viết chương trình JavaScript nhận vào số nguyên dương n, in ra tổng các số chẵn và tổng các số lẻ trong khoảng đó.
/ @param {number} n Phiên bản: ES6+ Độ phức tạp thời gian: O(n) / function sumOddEven(n) { let sumEven = 0; let sumOdd = 0; for (let i = 1; i <= n; i++) { if (i % 2 === 0) { sumEven += i; } else { sumOdd += i; } } console.log(`Tổng số chẵn: ${sumEven}`); console.log(`Tổng số lẻ: ${sumOdd}`); } // Input mẫu: n = 10 sumOddEven(10); // Output: Tổng số chẵn: 30, Tổng số lẻ: 25
Bài tập 2: Tìm các ước số của một số nguyên n
Tìm ước số là bài toán kinh điển để luyện tập cách sử dụng câu lệnh break và continue khi cần thiết để tối ưu hóa vòng lặp.
/ Giải thuật: Duyệt từ 1 đến n để tìm các số mà n chia hết Độ phức tạp: O(n) / function findDivisors(n) { let divisors = []; for (let i = 1; i <= n; i++) { if (n % i === 0) { divisors.push(i); } } console.log(`Các ước của ${n} là: ${divisors.join(', ')}`); } findDivisors(12); // Output: 1, 2, 3, 4, 6, 12
Xử lý chuỗi và định dạng dữ liệu nâng cao
Trong thực tế, bài tập về vòng lặp for trong JavaScript thường gắn liền với việc chuẩn hóa dữ liệu đầu vào từ người dùng hoặc API.
Bài tập 3: Chuẩn hóa chuỗi (Viết hoa chữ cái đầu)
Yêu cầu: Chuyển đổi một chuỗi bất kỳ thành định dạng Title Case (Viết hoa chữ cái đầu mỗi từ, còn lại viết thường) và kết thúc bằng dấu chấm.
/ Input: "we ARE kTeam" Output: "We Are Kteam." / function formatString(str) { let words = str.toLowerCase().split(' '); let result = ""; for (let i = 0; i 0) { // Lấy ký tự đầu viết hoa + phần còn lại let formattedWord = words[i][0].toUpperCase() + words[i].slice(1); result += formattedWord + (i === words.length - 1 ? "" : " "); } } return result + "."; } console.log(formatString('we ARE kTeam')); // "We Are Kteam."
Đoạn code trên sử dụng vòng lặp for để can thiệp vào từng phần tử sau khi đã tách chuỗi. Theo tài liệu MDN Web Docs về Array, phương pháp này đôi khi hiệu quả hơn các hàm bậc cao khi cần xử lý logic phức tạp bên trong.
Kỹ thuật vòng lặp lồng nhau trong bài toán hình học
Vòng lặp lồng nhau (nested loops) là một thử thách khó đối với người mới bắt đầu vì nó làm tăng độ phức tạp thuật toán lên $O(n^2)$.
Bài tập 4: Vẽ tam giác vuông số
/ Yêu cầu: In ra màn hình: 1 12 123 1234 12345 / function printTriangle(height) { for (let i = 1; i <= height; i++) { let row = ""; for (let j = 1; j <= i; j++) { row += j; } console.log(row); } } printTriangle(5);
Khi làm việc với các bài tập về vòng lặp for trong JavaScript dạng lồng nhau, bạn cần đặc biệt lưu ý đến việc đặt tên biến (i, j, k) để tránh nhầm lẫn. Trong các dự án lớn, việc lặp lồng nhau quá 3 tầng thường là dấu hiệu của một thiết kế code chưa tối ưu và cần được refactor lại.
Phân tích các lỗi runtime và tối ưu hóa hiệu năng
Một trong những sai lầm phổ biến nhất khi giải bài tập về vòng lặp for trong JavaScript là tạo ra vòng lặp vô tận. Ví dụ, câu lệnh for(;;) hoặc while(true) mà không có điểm dừng sẽ khiến trình duyệt bị treo (Hanging) do chiếm dụng toàn bộ tài nguyên CPU.
Danh sách các lưu ý quan trọng để tối ưu hóa vòng lặp:
- Tránh truy cập
.lengthcủa mảng lớn nhiều lần bằng cách gán nó vào một biến trước vòng lặp. - Sử dụng
for...ofkhi chỉ cần lấy giá trị và không quan tâm đến chỉ số index để mã nguồn sạch hơn. - Hạn chế thực hiện các phép tính phức tạp hoặc gọi API bên trong thân vòng lặp.
- Luôn kiểm tra điều kiện biên để tránh lỗi “Off-by-one” (lặp dư hoặc thiếu một lần).
- Sử dụng câu lệnh break và continue để thoát sớm khỏi vòng lặp khi đã đạt được mục đích.
- Ưu tiên dùng
constcho các biến không thay đổi bên trong khối lệnh của vòng lặp. - Kiểm tra kỹ kiểu dữ liệu của biến đếm để tránh trường hợp so sánh sai lệch dẫn đến lỗi logic.
Trong các hệ thống thực tế xử lý Big Data, việc thay thế vòng lặp for truyền thống bằng các kỹ thuật xử lý song song hoặc MapReduce là điều cần thiết. Tuy nhiên, đối với hầu hết các tác vụ phát triển Web thông thường, for loop vẫn là công cụ mạnh mẽ và minh bạch nhất về mặt logic.
Để nâng tầm kỹ năng sau khi hoàn thành các bài tập về vòng lặp for trong JavaScript, bạn hãy thử áp dụng chúng vào việc xây dựng các thuật toán sắp xếp như Bubble Sort hoặc Insertion Sort. Việc hiểu rõ cách dữ liệu di chuyển và thay đổi qua từng bước lặp sẽ giúp bạn trở thành một lập trình viên JavaScript thực thụ.
Cập nhật lần cuối 03/03/2026 by Hiếu IT
