Bạn có thể lặp qua một tập hợp trong JavaScript không?

Đối với nhiều thứ trong JavaScript, không có một cách duy nhất để đạt được chúng. Một việc đơn giản như lặp qua từng ký tự trong chuỗi là một trong số đó. Hãy cùng khám phá một số phương pháp và thảo luận về những mặt tích cực và hạn chế của chúng

Trước khi bắt đầu, chúng ta cần quay lại một câu hỏi cơ bản hơn nhiều

Cách truy cập một ký tự đơn của chuỗi

Ngày nay với ECMAScript 2015 (ES6), có hai cách để truy cập một ký tự

charAt()

Phương pháp này của đối tượng chuỗi đã xuất hiện được một thời gian và có thể được coi là cách tiếp cận cổ điển. Nó được hỗ trợ ngay cả trong các trình duyệt cũ nhất

ký hiệu khung

Phương pháp thứ hai là truy cập một ký tự thông qua ký hiệu dấu ngoặc

Cách tiếp cận này đã được giới thiệu với ECMAScript 2015 và có vẻ thuận tiện hơn. Hơn nữa, nó cho phép bạn coi một chuỗi giống như một cấu trúc giống như mảng. Điều này cho phép một vài phương thức lặp lại, như chúng ta sẽ sớm thấy

Phương pháp nào là thích hợp hơn?

Nhược điểm của charAt() có thể là khả năng đọc. Tuy nhiên, nó tương thích với các trình duyệt cũ như IE7. Một lập luận khác chống lại ký hiệu dấu ngoặc là nó không thể được sử dụng để gán một ký tự

Điều này có thể gây nhầm lẫn, đặc biệt là vì sẽ không có cảnh báo

Theo ý kiến ​​​​cá nhân của tôi, ký hiệu ngoặc thuận tiện hơn để viết và đọc. Các vấn đề về khả năng tương thích nên được giải quyết bằng cách dịch mã thay vì không sử dụng tính năng mong muốn

Các cách phổ biến để lặp chuỗi

Danh sách các kỹ thuật sau đây không được yêu cầu là đầy đủ. Nó sẽ hiển thị một số phương pháp được sử dụng thường xuyên nhất

Để chứng minh quá trình xử lý các ký tự đơn trong chuỗi của chúng tôi, chúng tôi sẽ sử dụng hàm sau

cho vòng lặp

Cách tiếp cận cổ điển — một vòng lặp for đơn giản

Mặc dù viết và đọc hơi rườm rà nhưng đây là phương pháp được biết đến nhanh nhất

cho…của

Câu lệnh này đã được giới thiệu với ECMAScript 2015 và có thể được sử dụng với các đối tượng có thể lặp lại. Sẽ thuận tiện hơn khi viết vòng lặp for cổ điển nếu bạn không quan tâm đến chỉ số hiện tại trong thân vòng lặp

cho mỗi()

Đây là phiên bản chức năng của vòng lặp for. Nhiều người thích nó hơn các vòng lặp for…offor bởi vì nó là một chức năng bậc cao hơn và nó giúp gắn bó với phong cách lập trình tận dụng tính bất biến (xem hướng dẫn về phong cách Airbnb trong tài liệu tham khảo)

Một nhược điểm là bạn cần chuyển đổi chuỗi thành một mảng trước khi lặp lại. Nếu hiệu suất thực sự quan trọng trong trường hợp sử dụng của bạn (và thường thì không), thì đó có thể không phải là lựa chọn đầu tiên của bạn

Phần kết luận

Cũng như nhiều kỹ thuật trong JavaScript, vấn đề chủ yếu là sở thích khi quyết định sử dụng kỹ thuật nào. Tuy nhiên, hãy lưu ý các tác động về tốc độ của quá trình chuyển đổi chuỗi thành mảng cũng như các vấn đề về tính tương thích của ký hiệu dấu ngoặc

Tôi khuyên bạn nên chọn kỹ thuật dễ đọc nhất và chỉ quan tâm đến việc tối ưu hóa tốc độ nếu bạn gặp vấn đề về hiệu suất và giải quyết các vấn đề về tính tương thích thông qua dịch mã

Bắt đầu với ES2015, chúng tôi có một loại vòng lặp mới để lặp qua các đối tượng có thể lặp lại. Vòng lặp

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7 mới là một loại vòng lặp mới cho phép chúng ta lặp qua bất kỳ đối tượng có thể lặp nào mà không cần sử dụng vòng lặp
const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
8 thông thường, vòng lặp
const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
9 hoặc sử dụng hàm
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
0 trong trường hợp mảng. Nó có thể được sử dụng trực tiếp để lặp qua bất kỳ đối tượng có thể lặp nào, bao gồm các đối tượng được tích hợp sẵn như Chuỗi, Mảng, các đối tượng giống mảng như
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
1 và
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
2 ,
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
3 ,
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
4 ,
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
5 và bất kỳ lần lặp nào do người dùng định nghĩa. Các trình lặp do người dùng xác định bao gồm các thực thể như trình tạo và trình lặp

Nếu chúng ta muốn sử dụng vòng lặp

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7 để lặp qua một đối tượng có thể lặp lại, chúng ta có thể viết nó bằng cú pháp sau

for (variable of iterable){
// run code
}

const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
7trong đoạn mã trên là biến đại diện cho từng mục nhập của đối tượng có thể lặp lại đang được lặp lại. Nó có thể được khai báo với
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
8 ,
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
9 hoặc
const str = 'string';

for (const char of str) {
console.log(char);
}
0.
const str = 'string';

for (const char of str) {
console.log(char);
}
1 là đối tượng nơi các thuộc tính đang được lặp lại

Ví dụ: chúng ta có thể sử dụng nó để lặp qua một mảng như trong đoạn mã sau

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}

Đoạn mã trên, các câu lệnh

const str = 'string';

for (const char of str) {
console.log(char);
}
2 sẽ ghi nhật ký 1, 2 và 3. Chúng ta có thể thay thế
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
8 bằng
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
9 nếu chúng ta muốn gán biến mà chúng ta đã sử dụng để lặp lại trong vòng lặp
const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7. Ví dụ, chúng ta có thể viết

const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}

Đoạn mã trên, các câu lệnh

const str = 'string';

for (const char of str) {
console.log(char);
}
2 sẽ ghi nhật ký 2, 4 và 6 vì chúng tôi đã sử dụng từ khóa
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
9 để khai báo
const str = 'string';

for (const char of str) {
console.log(char);
}
8 nên chúng tôi có thể sửa đổi
const str = 'string';

for (const char of str) {
console.log(char);
}
8 tại chỗ bằng cách nhân mỗi mục với 2. Chúng tôi không thể gán lại với
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
8 vì vậy chúng tôi phải sử dụng
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
9 hoặc
const str = 'string';

for (const char of str) {
console.log(char);
}
0 để khai báo biến mà chúng tôi muốn sửa đổi trong mỗi lần lặp

Chúng ta cũng có thể lặp qua các chuỗi. Nếu chúng ta làm điều đó, tất cả chúng ta đều nhận được từng ký tự của chuỗi trong mỗi lần lặp. Ví dụ: nếu chúng tôi có mã bên dưới

const str = 'string';

for (const char of str) {
console.log(char);
}

Sau đó, chúng tôi nhận được các ký tự riêng lẻ của

const arr = new Uint8Array([0x00, 0x2f]);

for (const num of arr) {
console.log(num);
}
3 được đăng nhập vào mỗi dòng

Tương tự như vậy, chúng ta có thể lặp qua TypedArrays, chứa dữ liệu nhị phân được biểu thị bằng một chuỗi số ở định dạng thập lục phân. Ví dụ, chúng ta có thể viết đoạn mã sau

const arr = new Uint8Array([0x00, 0x2f]);

for (const num of arr) {
console.log(num);
}

Trong ví dụ trên,

const str = 'string';

for (const char of str) {
console.log(char);
}
2 sẽ ghi 0 và 47. Lưu ý rằng giá trị đã ghi ở định dạng thập phân nhưng giá trị đã nhập ở định dạng thập lục phân

Nếu chúng tôi lặp lại trên Bản đồ, thì chúng tôi sẽ nhận được từng mục nhập của Bản đồ. Ví dụ: chúng ta có thể viết đoạn mã sau để lặp lại trên Bản đồ

const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const entry of map) {
console.log(entry);
}

Nếu chúng tôi đăng nhập các mục, chúng tôi nhận được

const arr = new Uint8Array([0x00, 0x2f]);

for (const num of arr) {
console.log(num);
}
5,
const arr = new Uint8Array([0x00, 0x2f]);

for (const num of arr) {
console.log(num);
}
6 và
const arr = new Uint8Array([0x00, 0x2f]);

for (const num of arr) {
console.log(num);
}
7. Bản đồ bao gồm các cặp khóa-giá trị làm mục nhập của chúng. Khi chúng tôi lặp lại trên Bản đồ, chúng tôi nhận được khóa là phần tử đầu tiên và giá trị là phần tử thứ hai là mỗi mục nhập. Để lấy khóa và giá trị của mỗi mục nhập vào biến riêng của nó, chúng ta có thể sử dụng toán tử hủy, như trong đoạn mã sau

const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const [key, value] of map) {
console.log(key, value);
}

Sau đó, khi chúng tôi đăng nhập các mục, chúng tôi nhận được

const arr = new Uint8Array([0x00, 0x2f]);

for (const num of arr) {
console.log(num);
}
8,
const arr = new Uint8Array([0x00, 0x2f]);

for (const num of arr) {
console.log(num);
}
9 và
const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const entry of map) {
console.log(entry);
}
0

Chúng ta cũng có thể sử dụng vòng lặp

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7 cho Sets. Ví dụ: chúng ta có thể lặp qua Set bằng cách thực hiện như sau

const set = new Set([1, 1, 2, 3, 3, 4, 5, 5, 6]);

for (const value of set) {
console.log(value);
}

Chúng tôi đặt rằng chúng tôi nhận được 1, 2, 3, 4, 5 và 6 được ghi lại do hàm tạo Set tự động loại bỏ các mục nhập trùng lặp bằng cách giữ giá trị xuất hiện đầu tiên trong Tập hợp và loại bỏ lần xuất hiện sau của cùng một giá trị

Vòng lặp

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7 cũng hoạt động để lặp qua đối tượng
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
1, là đối tượng toàn cục có các đối số được truyền vào hàm khi hàm được gọi. Ví dụ: nếu chúng ta viết đoạn mã sau

(function() {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3, 4, 5, 6);

Chúng tôi thấy rằng chúng tôi thấy 1, 2, 3, 4, 5 và 6 được ghi lại vì đây là những gì chúng tôi đã truyền vào khi chúng tôi gọi hàm. Lưu ý rằng điều này chỉ hoạt động đối với các chức năng thông thường vì ngữ cảnh của

const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const entry of map) {
console.log(entry);
}
4 phải được thay đổi thành chức năng được gọi thay vì
const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const entry of map) {
console.log(entry);
}
5. Các hàm mũi tên không thay đổi nội dung của
const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const entry of map) {
console.log(entry);
}
4, vì vậy chúng ta sẽ không nhận được các đối số chính xác khi chúng ta chạy cùng một vòng lặp bên trong một hàm mũi tên

Ngoài ra, chúng ta có thể lặp qua một danh sách các đối tượng Nút DOM, được gọi là

const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
2. Ví dụ: một trình duyệt có triển khai
const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const entry of map) {
console.log(entry);
}
8 không, sau đó chúng ta có thể sử dụng vòng lặp
const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7 như trong đoạn mã sau

const divs = document.querySelectorAll('div');

for (const div of divs) {
console.log(div);
}

Trong đoạn mã trên, chúng tôi đã ghi lại tất cả các phần tử

const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const [key, value] of map) {
console.log(key, value);
}
0 có trong tài liệu

Với

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7 vòng lặp, chúng ta có thể kết thúc vòng lặp bằng cách sử dụng các câu lệnh
const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const [key, value] of map) {
console.log(key, value);
}
2 ,
const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const [key, value] of map) {
console.log(key, value);
}
3 hoặc
const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const [key, value] of map) {
console.log(key, value);
}
4. Trình lặp sẽ đóng trong trường hợp này, nhưng quá trình thực thi sẽ tiếp tục bên ngoài vòng lặp. Ví dụ, nếu chúng ta viết

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
0

Đoạn code trên chúng ta chỉ log ‘a’ vì có câu lệnh break ở cuối vòng lặp

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7 nên sau lần lặp đầu tiên iterator sẽ đóng và vòng lặp kết thúc

Ảnh của Charlotte Coneybeer trên Bapt

Chúng ta có thể lặp qua các trình tạo, đây là các hàm đặc biệt trả về hàm trình tạo. Hàm tạo trả về giá trị tiếp theo của một đối tượng có thể lặp lại. Nó được sử dụng để cho phép chúng ta lặp qua một tập hợp các đối tượng bằng cách sử dụng hàm tạo trong vòng lặp

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7

Chúng ta cũng có thể lặp qua một trình tạo tạo ra các giá trị vô hạn. Chúng ta có thể có một vòng lặp vô hạn bên trong trình tạo để tiếp tục trả về các giá trị mới. Bởi vì câu lệnh

const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const [key, value] of map) {
console.log(key, value);
}
7 không chạy cho đến khi giá trị tiếp theo được yêu cầu, chúng tôi có thể tiếp tục chạy một vòng lặp vô hạn mà không làm hỏng trình duyệt. Ví dụ, chúng ta có thể viết

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
1

Nếu chúng tôi chạy mã ở trên, chúng tôi thấy rằng chúng tôi nhận được các số từ 2 đến 1000 được ghi lại. Sau đó,

const str = 'string';

for (const char of str) {
console.log(char);
}
8 lớn hơn 1000, do đó câu lệnh
const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const [key, value] of map) {
console.log(key, value);
}
2 được chạy. Chúng tôi không thể sử dụng lại trình tạo sau khi nó đã đóng, vì vậy nếu chúng tôi viết một cái gì đó như sau

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
2

Vòng lặp thứ hai sẽ không chạy vì vòng lặp được tạo bởi trình tạo đã bị đóng bởi vòng lặp đầu tiên với câu lệnh

const map = new Map([['a', 2], ['b', 4], ['c', 6]]);

for (const [key, value] of map) {
console.log(key, value);
}
2

Chúng ta có thể lặp lại các đối tượng có thể lặp lại khác có phương thức được biểu thị bằng Ký hiệu

const set = new Set([1, 1, 2, 3, 3, 4, 5, 5, 6]);

for (const value of set) {
console.log(value);
}
1 được xác định. Ví dụ: nếu chúng ta có đối tượng lặp sau được xác định

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
3

Sau đó, chúng ta có thể chạy vòng lặp bên dưới để hiển thị nhật ký kết quả được tạo

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
4

Khi chúng tôi chạy nó, sẽ thấy 0 đến 9 được ghi lại khi

const str = 'string';

for (const char of str) {
console.log(char);
}
2 được chạy trong vòng lặp ở trên

Điều quan trọng là chúng ta không nhầm lẫn giữa vòng lặp

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7 với vòng lặp
const set = new Set([1, 1, 2, 3, 3, 4, 5, 5, 6]);

for (const value of set) {
console.log(value);
}
4. Vòng lặp
const set = new Set([1, 1, 2, 3, 3, 4, 5, 5, 6]);

for (const value of set) {
console.log(value);
}
4 if để lặp qua các khóa cấp cao nhất của các đối tượng bao gồm mọi thứ trong chuỗi nguyên mẫu, trong khi vòng lặp
const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7 có thể lặp qua bất kỳ đối tượng có thể lặp nào như mảng, Bộ, Bản đồ, đối tượng
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
1, đối tượng
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
2 và bất kỳ người dùng nào-

Ví dụ: nếu chúng ta có một cái gì đó như

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
5

Sau đó, chúng tôi nhận được 0, 1, 2, 'foo', 'arrProp' và 'objProp' được ghi lại, là các khóa của đối tượng và phương thức được xác định cho đối tượng

const set = new Set([1, 1, 2, 3, 3, 4, 5, 5, 6]);

for (const value of set) {
console.log(value);
}
9. Nó bao gồm tất cả các thuộc tính và phương thức trong chuỗi nguyên mẫu. Nó kế thừa tất cả các thuộc tính và phương thức từ Đối tượng và Mảng đã được thêm vào nguyên mẫu của Đối tượng và Mảng để chúng ta có được tất cả những thứ trong kế thừa chuỗi trong vòng lặp
const set = new Set([1, 1, 2, 3, 3, 4, 5, 5, 6]);

for (const value of set) {
console.log(value);
}
4. Chỉ có vô số thuộc tính được ghi vào đối tượng
const set = new Set([1, 1, 2, 3, 3, 4, 5, 5, 6]);

for (const value of set) {
console.log(value);
}
9 theo thứ tự tùy ý. Nó ghi lại chỉ mục và thuộc tính mà chúng tôi đã xác định trong
(function() {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3, 4, 5, 6);
2và
(function() {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3, 4, 5, 6);
3như
(function() {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3, 4, 5, 6);
4và
(function() {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3, 4, 5, 6);
5

Để chỉ lặp qua các thuộc tính không kế thừa từ nguyên mẫu của một đối tượng, chúng ta có thể sử dụng

(function() {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3, 4, 5, 6);
6 để kiểm tra xem thuộc tính có được xác định trên chính đối tượng đó không

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
6

(function() {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3, 4, 5, 6);
4 và
(function() {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3, 4, 5, 6);
5 được bỏ qua vì chúng được kế thừa từ các đối tượng
(function() {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3, 4, 5, 6);
2 và
(function() {
for (const argument of arguments) {
console.log(argument);
}
})(1, 2, 3, 4, 5, 6);
3 tương ứng

Vòng lặp

const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
7 là một loại vòng lặp mới cho phép chúng ta lặp qua bất kỳ đối tượng lặp nào mà không cần sử dụng vòng lặp
const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
8 thông thường, vòng lặp
const arr = [1,2,3];

for (const num of arr) {
console.log(num);
}
9 hoặc sử dụng hàm
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
0 trong trường hợp mảng. Nó có thể được sử dụng trực tiếp để lặp qua bất kỳ đối tượng có thể lặp nào, bao gồm các đối tượng được tích hợp sẵn như Chuỗi, Mảng, các đối tượng giống mảng như
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
1 và
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
2 ,
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
3 ,
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
4 ,
const arr = [1,2,3];

for (let num of arr) {
num *= 2 ;
console.log(num);
}
5 và bất kỳ lần lặp nào do người dùng định nghĩa. Các trình lặp do người dùng xác định bao gồm các thực thể như trình tạo và trình lặp. Đây là một vòng lặp tiện dụng vì nó cho phép chúng ta vượt qua bất kỳ đối tượng có thể lặp nào thay vì chỉ các mảng. Bây giờ chúng ta có một câu lệnh lặp hoạt động với đối tượng iterable

Chúng ta có thể lặp lại tập hợp trong JavaScript không?

Để lặp lại các phần tử của Tập hợp trong JavaScript, gọi phương thức values() trên tập hợp này để trả về một trình vòng lặp và sử dụng vòng lặp for-of trên trình lặp này.

Bạn có thể lặp qua các tập hợp không?

Không có cách nào để lặp lại một tập hợp mà không có trình lặp , ngoài việc truy cập cấu trúc cơ bản chứa dữ liệu thông qua phản chiếu và sao chép mã do Set#iterator cung cấp.

Bạn có thể lặp qua một tập hợp có vòng lặp for không?

Bạn không thể truy cập các mục trong một tập hợp bằng cách tham khảo chỉ mục, vì các tập hợp không có thứ tự nên các mục không có chỉ mục. Nhưng bạn có thể lặp qua các mục đã đặt bằng cách sử dụng vòng lặp for hoặc hỏi xem một giá trị cụ thể có tồn tại trong một tập hợp hay không bằng cách sử dụng từ khóa in.

Làm cách nào để sử dụng forEach trên trường quay trong JavaScript?

Phương thức Set forEach() trong JavaScript thực thi hàm đã chỉ định một lần cho mỗi giá trị trong đối tượng Set. Nó duy trì một thứ tự chèn. Không giống như Bản đồ, đối tượng Set không sử dụng khóa bên ngoài. .
setObj. forEach(hàm gọi lại(value1, value2, Set) {
// trình lặp của bạn
[, thisArg])