Các vòng lặp động lồng nhau JavaScript

Tôi đang cố gắng tìm ra một cách đơn giản để xử lý cấp độ vòng lặp lồng nhau động. Xét hàm sau nhận 2 tham số. số cấp độ vòng lặp và giá trị tối đa void nestedLoop[int looplevel, int maxvalue] nestedLoop[1,2];

Trước đây tôi đã xuất bản một bài báo về các vòng lặp trong JavaScript có thể được truy cập tại đây. Để đầy đủ, tôi sẽ đưa ra một ví dụ ngắn gọn về vòng lặp for trong JavaScript

const arr = [1, 2, 3, 4, 5, 6];for[let i = 0; i < arr.length; i++] {
console.log[arr[i]];
}
//Returns --->1
2
3
4
5
6
  • Trong ví dụ trên, chúng ta bắt đầu bằng cách khai báo một biến có tên là arr và gán cho biến này một mảng chứa các số từ một đến sáu
  • Tiếp theo, chúng tôi tạo một vòng lặp for, Chúng tôi khởi tạo một biến có tên là i đóng vai trò là bộ đếm cho vòng lặp
  • Tiếp theo, chúng tôi sử dụng một điều kiện khi vòng lặp ngừng chạy. Trong trường hợp của chúng tôi, chúng tôi sẽ tiếp tục chạy vòng lặp trong khi i nhỏ hơn độ dài của mảng arr
  • Cuối cùng, đối với trình cập nhật, chúng tôi nói rằng mỗi khi vòng lặp chạy, chúng tôi nên tăng i
  • Bên trong thân vòng lặp, chúng ta sử dụng console log để in ra phần tử của mảng arr có chỉ số i khi vòng lặp chạy

Kết quả của việc này là mọi phần tử trong mảng arr đều được in ra

Đôi khi bạn có thể thấy mình được trình bày với một cấu trúc dữ liệu phức tạp hơn, chẳng hạn như một mảng lồng nhau. Hãy bắt đầu bằng cách xem điều gì sẽ xảy ra khi chúng ta sử dụng vòng lặp ở trên với kiểu cấu trúc dữ liệu này

const arr = [[1, 2], [3, 4], [5, 6]];for[let i = 0; i < arr.length; i++] {
console.log[arr[i]];
}
//Returns --->
[1, 2]
[3, 4]
[5, 6]

Trong ví dụ trên, chúng ta sử dụng vòng lặp for tương tự nhưng lần này mảng arr chứa ba mảng lồng nhau và mỗi mảng lồng nhau chứa hai giá trị. Khi vòng lặp chạy, chúng tôi nhận được từng mảng lồng nhau được trả về. Nếu chúng ta muốn truy cập các phần tử riêng lẻ của các mảng lồng nhau thì sao?

Vòng lồng nhau

Bằng cách sử dụng một vòng lặp lồng nhau, chúng ta có thể truy cập các phần tử riêng lẻ trong các mảng lồng nhau. Hãy xem một ví dụ về cách điều này sẽ hoạt động với ví dụ trên

const arr = [[1, 2], [3, 4], [5, 6]];for[let i = 0; i < arr.length; i++] {
for[let j = 0; j < arr[i].length; j++] {
console.log[arr[i][j]];
}
}
//Returns --->1
2
3
4
5
6

Kết quả của vòng lặp lồng nhau của chúng tôi là chúng tôi có thể liệt kê từng phần tử riêng lẻ trong các mảng lồng nhau. Bây giờ hãy phá vỡ những gì đang xảy ra ở đây. Chúng ta đã biết rằng vòng lặp bên ngoài truy cập từng mảng lồng nhau. Khi điều này xảy ra, vòng lặp bên trong sẽ đi qua từng phần tử trong mảng lồng nhau. Vì vậy, nhật ký bảng điều khiển về cơ bản là nói về phần tử mảng của i, là mảng chứa 1 và 2 bằng cách sử dụng j lặp qua các phần tử này. Hãy phá vỡ điều này một chút nữa. Đối với lần lặp đầu tiên của vòng lặp, chúng tôi nhận được như sau

const arr = [[1, 2], [3, 4], [5, 6]];for[let i = 0; i < arr.length; i++] {
console.log[`I am the outer loop ${arr[i]}`]
for[let j = 0; j < arr[i].length; j++] {
console.log[`I am the inner loop ${arr[i][j]}`]
}
}
//Returns --->
I am the outer loop 1,2
I am the inner loop 1
I am the inner loop 2

Vì vậy, vòng lặp bên ngoài trả về mảng lồng nhau đầu tiên chứa các phần tử 1 và 2. Vòng lặp bên trong sau đó lần lượt lặp qua từng phần tử của mảng lồng nhau. Do đó, chúng tôi nhận được 1 và sau đó chúng tôi nhận được 2

Quá trình này chạy cho toàn bộ mảng mảng lồng nhau. Do đó, đầu ra cuối cùng với các nhật ký bảng điều khiển này ở bên dưới

const arr = [[1, 2], [3, 4], [5, 6]];for[let i = 0; i < arr.length; i++] {
console.log[`I am the outer loop ${arr[i]}`]
for[let j = 0; j < arr[i].length; j++] {
console.log[`I am the inner loop ${arr[i][j]}`]
}
}
//Returns --->
I am the outer loop 1,2
I am the inner loop 1
I am the inner loop 2
I am the outer loop 3,4
I am the inner loop 3
I am the inner loop 4
I am the outer loop 5,6
I am the inner loop 5
I am the inner loop 6

Mảng chuỗi

Cách tiếp cận này có thể hữu ích như nhau nếu bạn có một dãy từ và bạn muốn lặp qua từng chữ cái riêng lẻ. Hãy xem một ví dụ

const names = ["Abby", "Bobby", "Freddy"];for[let i = 0; i < names.length; i++] {
console.log[names[i]];
}
//Returns --->
Abby
Bobby
Freddy

Sử dụng vòng lặp for, chúng tôi lặp qua mảng tên và chúng tôi có thể truy cập từng phần tử trong mảng tên. Điều này thật tuyệt nhưng nếu bạn muốn truy cập các phần tử riêng lẻ của tên thì vòng lặp lồng nhau là một mẫu rất hữu ích

const names = ["Abby", "Bobby", "Freddy"];for[let i = 0; i < names.length; i++] {
console.log[`I am the outer loop ${names[i]}`]
for[let j = 0; j < names[i].length; j++] {
console.log[`I am the inner loop ${names[i][j]}`]
}
}
//Returns --->
I am the outer loop Abby
I am the inner loop A
I am the inner loop b
I am the inner loop b
I am the inner loop y
I am the outer loop BobbyI am the inner loop B
I am the inner loop o
I am the inner loop b
I am the inner loop b
I am the inner loop y
I am the outer loop Freddy
I am the inner loop r
I am the inner loop e
I am the inner loop d
I am the inner loop d
I am the inner loop y

Tôi hy vọng bạn thích bài viết này. Vui lòng gửi bất kỳ nhận xét, câu hỏi hoặc phản hồi nào và theo dõi tôi để biết thêm nội dung

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter, LinkedIn, YouTube và Discord. Quan tâm đến hacking tăng trưởng?

Chủ Đề