JavaScript cung cấp một số phương thức và kỹ thuật để lặp qua các mảng và phần tử và thực hiện mọi việc với chúng. Vậy… bạn nên sử dụng phương pháp nào và tại sao?
Hôm nay, chúng ta sẽ xem xét các cách khác nhau mà bạn có thể lặp lại mọi thứ với vanilla JS, khi nào và tại sao nên chọn cái này thay vì cái kia
Nào cùng đào vào bên trong
Một mảng ví dụ
Đối với bài viết hôm nay, hãy sử dụng một mảng sandwiches làm ví dụ
letsandwiches=['turkey','tuna','ham','pb&j'];
Chúng tôi sẽ lặp lại nó và ghi từng mục vào bảng điều khiển, nhưng trong một trang web hoặc ứng dụng thực, bạn có thể muốn thao tác dữ liệu theo một cách nào đó
Vòng lặp for
Bạn có thể sử dụng vòng lặp for để lặp qua các mảng, NodeList và các đối tượng giống như mảng khác. Đây là cách học cũ để lặp lại mọi thứ
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for(leti=0;i<sandwiches.length;i++){console.log(i);// index
console.log(sandwiches[i]);// value
}
Trong phần đầu tiên của vòng lặp, trước dấu chấm phẩy đầu tiên, chúng ta đặt một biến đếm (thường là ________ 38 ______, nhưng nó có thể là bất kỳ thứ gì) thành
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for(leti=0;i<sandwiches.length;i++){console.log(i);// index
console.log(sandwiches[i]);// value
}
0
Phần thứ hai, giữa hai dấu chấm phẩy, là bài kiểm tra mà chúng tôi kiểm tra sau mỗi lần lặp lại vòng lặp. Trong trường hợp này, chúng tôi muốn đảm bảo giá trị bộ đếm nhỏ hơn tổng số mục trong mảng của chúng tôi. Chúng tôi làm điều này bằng cách kiểm tra
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for(leti=0;i<sandwiches.length;i++){console.log(i);// index
console.log(sandwiches[i]);// value
}
1 của mảng của chúng tôi
Cuối cùng, sau dấu chấm phẩy thứ hai, chúng tôi chỉ định những gì sẽ chạy sau mỗi vòng lặp. Trong trường hợp này, chúng tôi đang thêm
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for(leti=0;i<sandwiches.length;i++){console.log(i);// index
console.log(sandwiches[i]);// value
}
2 vào giá trị của i với
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for(leti=0;i<sandwiches.length;i++){console.log(i);// index
console.log(sandwiches[i]);// value
}
4
Sau đó, chúng tôi có thể sử dụng _______ 38 _______ để lấy mục hiện tại trong vòng lặp từ mảng của chúng tôi
Đây là một bản demo
Vòng lặp // logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for (let i = 0; i < sandwiches.length; i++) {
console.log(i); // index
console.log(sandwiches[i]); // value
}
6
Một cách tiếp cận hiện đại hơn, bạn có thể sử dụng
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for(leti=0;i<sandwiches.length;i++){console.log(i);// index
console.log(sandwiches[i]);// value
}
6 để lặp qua các đối tượng có thể lặp lại. Điều đó bao gồm các chuỗi, mảng và các đối tượng giống như mảng khác như NodeLists, HTMLCollections và HTMLFormControlsCollection, nhưng không phải là các đối tượng đơn giản (
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for(leti=0;i<sandwiches.length;i++){console.log(i);// index
console.log(sandwiches[i]);// value
}
8)
Trong một vòng lặp
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for(leti=0;i<sandwiches.length;i++){console.log(i);// index
console.log(sandwiches[i]);// value
}
6, bạn xác định một biến để đại diện cho mục hiện tại
// logs "turkey", "tuna", "pb&j"
for(letsandwichofsandwiches){// Skip to the next item in the loop
if(sandwich==='ham')continue;console.log(sandwich);}// Logs "turkey", "tuna"
for(letsandwichofsandwiches){// Skip to the next item in the loop
if(sandwich==='ham')break;console.log(sandwich);}
Các phương thức // logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
console.log(sandwich);
}
7 và // logs "turkey", "tuna", "ham", "pb&j"
for (let sandwich of sandwiches) {
console.log(sandwich);
}
8
8 cung cấp một cách đơn giản hơn để lặp lại các mảng và NodeLists trong khi vẫn có quyền truy cập vào chỉ mục
Bạn chuyển một hàm gọi lại vào phương thức
// logs "turkey", "tuna", "pb&j"
for(letsandwichofsandwiches){// Skip to the next item in the loop
if(sandwich==='ham')continue;console.log(sandwich);}// Logs "turkey", "tuna"
for(letsandwichofsandwiches){// Skip to the next item in the loop
if(sandwich==='ham')break;console.log(sandwich);}
1. Bản thân cuộc gọi lại chấp nhận ba đối số. mục hiện tại trong vòng lặp, chỉ mục của mục hiện tại trong vòng lặp và chính mảng đó. Cả ba đều là tùy chọn và bạn có thể đặt tên cho chúng theo bất cứ thứ gì bạn muốn
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
sandwiches.forEach(function(sandwich,index){console.log(index);// index
console.log(sandwich);// value
});
// logs 0, "turkey", 1, "tuna", 2, "ham", 3, "pb&j"
for(leti=0;i<sandwiches.length;i++){console.log(i);// index
console.log(sandwiches[i]);// value
}
6, bạn không thể kết thúc hàm gọi lại
// logs "turkey", "tuna", "pb&j"
for(letsandwichofsandwiches){// Skip to the next item in the loop
if(sandwich==='ham')continue;console.log(sandwich);}// Logs "turkey", "tuna"
for(letsandwichofsandwiches){// Skip to the next item in the loop
if(sandwich==='ham')break;console.log(sandwich);}
1 trước khi nó được lặp qua tất cả các mục. Bạn có thể
// logs "turkey", "tuna", "pb&j"
for(letsandwichofsandwiches){// Skip to the next item in the loop
if(sandwich==='ham')continue;console.log(sandwich);}// Logs "turkey", "tuna"
for(letsandwichofsandwiches){// Skip to the next item in the loop
if(sandwich==='ham')break;console.log(sandwich);}
6 để kết thúc vòng lặp hiện tại (giống như bạn làm với
Nếu tôi cần chỉ mục và muốn kết thúc vòng lặp sớm sau khi một điều kiện được đáp ứng, tôi sẽ sử dụng vòng lặp for
Tôi cố gắng tránh các vòng lặp for trừ khi có lý do thuyết phục để sử dụng chúng. Chúng khó đọc. Chúng khó viết. Họ chỉ là lộn xộn
Làm cách nào để trả về một mảng mới trong JavaScript vòng lặp for?
bộ lọc lặp qua một mảng và trả về một mảng mới chỉ có các phần tử trả về true trong hàm gọi lại. Ví dụ, để chỉ lấy các phần tử lớn hơn 0 trong mảng, bạn có thể làm theo cách này với vòng lặp for. const betterArr = []; .
Làm cách nào để lặp một mảng trong JavaScript?
Cách lặp qua một mảng bằng vòng lặp forEach trong JavaScript. Phương thức mảng forEach() lặp qua bất kỳ mảng nào, thực thi hàm được cung cấp một lần cho mỗi phần tử mảng theo thứ tự chỉ số tăng dần . Chức năng này được gọi là chức năng gọi lại.
Làm cách nào để trả về một giá trị mảng trong JavaScript?
Mảng Javascript . hàm values() là một hàm có sẵn trong JavaScript được sử dụng để trả về một đối tượng Iterator mảng mới chứa các giá trị cho từng chỉ mục trong mảng i. e, nó in ra tất cả các phần tử của mảng. Giá trị trả về. Nó trả về một đối tượng lặp mảng mới i. e, các phần tử của mảng đã cho.
Chúng ta có thể sử dụng JavaScript vòng lặp return in for không?
Có, khi câu lệnh return được thực thi, toàn bộ chức năng sẽ bị thoát tại thời điểm đó .