Hướng dẫn javascript loop console log - nhật ký bảng điều khiển vòng lặp javascript

Hướng dẫn javascript loop console log - nhật ký bảng điều khiển vòng lặp javascript

Đã đăng vào thg 8 21, 2020 2:42 CH 2 phút đọc 2 phút đọc

Trong hướng dẫn này, mình sẽ giới thiệu cho bạn về câu lệnh for ... of trong js cho phép bạn tạo một vòng lặp lặp qua một đối tượng có thể lặp lại

ES6 đã giới thiệu một cấu trúc mới for ... of tạo ra một vòng lặp lại trên đối tượng có thể lắp lại như Array, Map, Set hoặc bất kỳ đối tượng nào có thể lặp.Array, Map, Set hoặc bất kỳ đối tượng nào có thể lặp.

Dưới đây là ví dụ cho for ... offor ... of

for (variable of iterable) {
   // statements 
}

Các bạn cùng xem một số ví dụ về việc sử dụng for ... offor ... of

Array

Ví dụ sau cho bạn thấy cách sử dụng for ... of để lặp qua các phần tử của một mảng

let scores = [10, 20, 30];
for (let score of scores) {
    score = score + 5;
    console.log(score);
}
// 15
// 25
// 35

Nếu bạn không thay đổi biến bên trong vòng lặp, bạn nên sử dụng const thay vì let như sau:const thay vì let như sau:

for (const score of scores) {
    console.log(score);
}
// 10
// 20
// 30
String

Ví dụ sau cho bạn thấy cách sử dụng for ... of để lặp qua các phần tử của một chuỗi

let str = 'abc';
for (let c of str) {
    console.log(c);
}
// a
// b
// c
Map

Ví dụ sau cho bạn thấy cách sử dụng for ... of để lặp qua các phần tử của một map

var colors = new Map();
colors.set('red', '#ff0000');
colors.set('green', '#00ff00');
colors.set('blue', '#0000ff');

for (let color of colors) {
    console.log(color);
}

// ["red", "#ff0000"]
// ["green", "#00ff00"]
// ["blue", "#0000ff"]
Set

Ví dụ sau cho bạn thấy cách sử dụng for ... of để lặp qua các phần tử của một set

let nums = new Set([1, 2, 3]);

for (let num of nums) {
    console.log(num); //
}
// 1
// 2
// 3
for...of vs. for...in

Vòng lặp for ... in lặp qua tất cả các thuộc tính có thể liệt kê của một đối tượng. Nó không lặp lại qua một tập hợp như Array, Map, Setfor ... in lặp qua tất cả các thuộc tính có thể liệt kê của một đối tượng. Nó không lặp lại qua một tập hợp như Array, Map, Set

Không giống như vòng lặp for ... in, vòng lặp for ... of lặp lại một tập hợp, thay vì một đối tượng. Trên thực tế, for ... of lặp qua các phần tử của bất kỳ tập hợp nào có thuộc tính [Symbol.iterator].for ... in, vòng lặp for ... of lặp lại một tập hợp, thay vì một đối tượng. Trên thực tế, for ... of lặp qua các phần tử của bất kỳ tập hợp nào có thuộc tính [Symbol.iterator].

Ví dụ sau minh họa sự khác biệt giữa for ... of và for ... infor ... offor ... in

let numbers = [6, 7, 8];
numbers.foo = "foo";

for (let i in numbers) {
    console.log(i);
}
// 0
// 1
// 2
// foo
for (let i of numbers) {
    console.log(i);
}
// 6
// 7
// 8

Trong bài viết này, mình đã cách sử dụng for ... of trong js để lặp qua một collection

Hẹn các bạn ở bài viết tiếp theo

Hướng dẫn javascript loop console log - nhật ký bảng điều khiển vòng lặp javascript

All rights reserved

Việc lặp các thao tác trong lập trình được gọi là vòng lặp, và là một trong những thành phần quan trọng nhất của lập trình. Vòng lặp sẽ có 1 điều kiện để duy trì và khi điều kiện đó không được đảm bảo thì vòng lặp sẽ kết thúc. Javascript cơ bản – Thạch Phạm blog
Javascript cơ bản – Thạch Phạm blog

Vòng lặp, hay còn gọi là looping là kĩ thuật rất quan trọng trong lập trình Javascript. Khi lập trình Javascript, bạn sẽ không thể tránh khỏi làm việc với mảng các phần tử hay thậm chí mảng của mảng. Do đó, nếu nắm vững kiến thức về vòng lặp Javascript, bạn sẽ làm việc hiệu quả và có nhiều lựa chọn hơn khi cần sử dụng đến vòng lặp. Ở bài viết này, mình sẽ đi qua các cách tạo vòng lặp Javascript thường được sử dụng.
Do đó, nếu nắm vững kiến thức về vòng lặp Javascript, bạn sẽ làm việc hiệu quả và có nhiều lựa chọn hơn khi cần sử dụng đến vòng lặp. Ở bài viết này, mình sẽ đi qua các cách tạo vòng lặp Javascript thường được sử dụng.

For và While cơ bản

Đối với Javascript cơ bản, có 2 cách để tạo vòng lặp: vòng lặp for và vòng lặp while. Cả 2 đều bao gồm 2 thành phần: điều kiện để duy trì vòng lặp, và thân vòng lặp chứa các thao tác sẽ được lặp. Khi điều kiện để duy trì không còn đúng đắn nữa, vòng lặp sẽ kết thúc.

Hướng dẫn javascript loop console log - nhật ký bảng điều khiển vòng lặp javascript


// Khởi tạo 1 mảng gồm 3 phần tử ban đầu
var arr = [1, 2, 3];

// Khởi tạo 1 biến để lưu giữ chiều dài mảng
var arrLen = arr.length;

var i;
// Vòng lặp For thuận – lặp từ đầu mảng xuống cuối mảng
for (i=0; i < arrLen; ++i) {
// Thân vòng lặp
alert(arr[i]);
}

// Vòng lặp For thuận – lặp từ cuối mảng lên đầu mảng
for (i=arrLen; i >= 0; –i) {
// Thân vòng lặp
alert(arr[i]);
}

// Vòng lặp While thuận – lặp từ đầu mảng xuống cuối mảng
i = 0;
while (i < arrLen) {
// Thân vòng lặp
alert(arr[i]);
++i;
}

// Vòng lặp While ngược – lặp từ cuối mảng lên đầu mảng
i = arrLen;
while (i >= 0) {
// Thân vòng lặp
alert(arr[i]);
–i;
}

Một lưu ý khi sử dụng vòng lặp For là ta không nên lười như thế này:


// Không sử dụng 1 biến khác để lưu trữ độ dài mảng
// Mà sử dụng trực tiếp thuộc tính .length
for (i=0; i < arr.length; ++i) { … }

Thao tác này là không tốt, vì gây tốn tài nguyên không đáng có. Khi một vòng lặp kết thúc, biểu thức

let scores = [10, 20, 30];
for (let score of scores) {
    score = score + 5;
    console.log(score);
}
// 15
// 25
// 35
3 sẽ được đánh giá lại và biến
let scores = [10, 20, 30];
for (let score of scores) {
    score = score + 5;
    console.log(score);
}
// 15
// 25
// 35
4 phải tính toán lại chiều dài của cả mảng để có thể trả về
let scores = [10, 20, 30];
for (let score of scores) {
    score = score + 5;
    console.log(score);
}
// 15
// 25
// 35
5. Nếu bạn quan tâm đến chuẩn hóa code và tối ưu hóa tốc độ thì bạn nên để ý đến điều này. Bạn có thể kiểm chứng thêm ở http://jsperf.com/test-js-length-in-loop.

Hướng dẫn javascript loop console log - nhật ký bảng điều khiển vòng lặp javascript

Vòng lặp For..in

Vòng lặp For..in tương tự như vòng lặp For cơ bản, nhưng có 1 điểm quan trọng là For..in có thể được dùng cho 1 biến kiểu đối tượng.

Hướng dẫn javascript loop console log - nhật ký bảng điều khiển vòng lặp javascript


// Vòng lặp for..in cho 1 Mảng
var arr = [‘JS’,’loop’,’for..in’];
for ( var i in arr ) {
// Thân vòng lặp
console.log(arr[i]);
}

// Vòng lặp for..in cho 1 Object
var obj = {
‘name’: ‘test object’,
‘type’: ‘test’,
‘id’: 12888
};
for ( var i in obj ) {
// Thân vòng lặp
console.log(obj[i]);
}

Vòng lặp Do..while

Ở vòng lặp While, biểu thức so sánh sẽ được đánh giá trước. Nếu như biểu thức đúng thì khối lệnh bên trong mới được thực hiện. Do..while hoạt động khác với While ở 1 điểm: khối lệnh sẽ được chạy trước biểu thức so sánh.

Hướng dẫn javascript loop console log - nhật ký bảng điều khiển vòng lặp javascript

let scores = [10, 20, 30];
for (let score of scores) {
    score = score + 5;
    console.log(score);
}
// 15
// 25
// 35
0

Vòng lặp forEach

forEach mới xuất hiện trong những phiên bản Javascript gần đây cho các trình duyệt hiện đại, giúp tạo vòng lặp với mảng nhanh hơn.

Hướng dẫn javascript loop console log - nhật ký bảng điều khiển vòng lặp javascript

let scores = [10, 20, 30];
for (let score of scores) {
    score = score + 5;
    console.log(score);
}
// 15
// 25
// 35
1

Vòng lặp với jQuery

Đây có lẽ là thao tác quen thuộc đối với những bạn hay dùng jQuery. jQuery.each() khá tiện về cú pháp, và có thể thao tác cả với mảng và đối tượng.

Hướng dẫn javascript loop console log - nhật ký bảng điều khiển vòng lặp javascript

let scores = [10, 20, 30];
for (let score of scores) {
    score = score + 5;
    console.log(score);
}
// 15
// 25
// 35
2

Lưu ý khi sử dụng vòng lặp Javascript

  1. Khi sử dụng vòng lặp, nếu sơ ý sẽ dễ gây tốn tài nguyên không cần thiết, làm cho cả ứng dụng hay website cũng ì ạch theo, thậm chí tệ nhất là lặp đến vô hạn vì điều kiện dừng không đảm bảo.
  2. Mỗi loại vòng lặp sẽ có ưu và nhược điểm riêng, do đó hãy xem xét lại tổ chức code và nhu cầu của bạn để quyết định kĩ.
  3. Tốc độ xử lý của các loại vòng lặp Javascript là khác nhau, trong đó nhanh nhất là vòng lặp While và chậm nhất là For..in. Bạn có thể xem thêm đồ thị thống kê ở bên dưới hoặc chạy trực tiếp ở đây:

    Hướng dẫn javascript loop console log - nhật ký bảng điều khiển vòng lặp javascript

Lời kết

Javascript hỗ trợ nhiều loại vòng lặp để ta tùy nghi sử dụng trong nhiều tình huống. Tuy nhiên, do thói quen nên có thể bạn sẽ yêu thích một loại vòng lặp Javascript nhất định hơn, dù cho loại đó có thể có nhược điểm về tốc độ hay cú pháp. Như bản thân mình, thường sẽ thích dùng

let scores = [10, 20, 30];
for (let score of scores) {
    score = score + 5;
    console.log(score);
}
// 15
// 25
// 35
6 cho các vòng lặp phức tạp hay khi làm việc, và
let scores = [10, 20, 30];
for (let score of scores) {
    score = score + 5;
    console.log(score);
}
// 15
// 25
// 35
7 khi cần làm nhanh cái gì đó mà không quan tâm đến tốc độ xử lý. Còn bạn thì sao? Hãy chia sẻ thêm các xử lý hay các cú pháp vòng lặp bạn thường sử dụng ở phần bình luận bên dưới nha.

Hiện tại blog tạm đóng bình luận vì mình cần tập trung thời gian vào cập nhật bài viết. Bình luận sẽ mở ra cho đến khi mình sẵn sàng.