Lặp qua các thuộc tính đối tượng JavaScript

Lặp qua các thuộc tính đối tượng JavaScript
JavaScript

Khám phá việc lặp lại đối tượng JavaScript

Lặp qua các thuộc tính của đối tượng JavaScript là một nhiệm vụ phổ biến mà các nhà phát triển gặp phải. Cho dù bạn cần truy cập khóa, giá trị hay cả hai, việc hiểu cách liệt kê các thuộc tính đối tượng một cách hiệu quả là rất quan trọng.

Trong bài viết này, chúng ta sẽ khám phá các phương pháp khác nhau để lặp lại các phần tử của đối tượng. Cuối cùng, bạn sẽ được trang bị kiến ​​thức để xử lý việc liệt kê đối tượng một cách dễ dàng, đảm bảo mã JavaScript của bạn vừa hiệu quả vừa dễ đọc.

Yêu cầu Sự miêu tả
for...in Lặp qua các thuộc tính của một đối tượng, lặp qua tất cả các thuộc tính có thể đếm được.
hasOwnProperty() Kiểm tra xem đối tượng có thuộc tính được chỉ định là thuộc tính trực tiếp, không được kế thừa qua chuỗi nguyên mẫu hay không.
Object.entries() Trả về một mảng gồm các cặp thuộc tính [khóa, giá trị] có thể đếm được của chính một đối tượng nhất định.
Object.keys() Trả về một mảng gồm các tên thuộc tính có thể đếm được của chính một đối tượng nhất định.
Object.values() Trả về một mảng các giá trị thuộc tính có thể đếm được của chính một đối tượng nhất định.
forEach() Thực thi một hàm được cung cấp một lần cho mỗi phần tử mảng.

Tìm hiểu kỹ thuật lặp đối tượng JavaScript

Các for...in vòng lặp là một cấu trúc JavaScript cơ bản được sử dụng để lặp lại các thuộc tính có thể đếm được của một đối tượng. Trong kịch bản ví dụ, for...in được sử dụng để lặp qua từng thuộc tính của đối tượng p. Trong vòng lặp, hasOwnProperty() được sử dụng để đảm bảo rằng thuộc tính là thuộc tính trực tiếp của đối tượng và không được kế thừa từ chuỗi nguyên mẫu của nó. Điều này rất quan trọng để tránh những kết quả ngoài ý muốn khi đối tượng kế thừa các thuộc tính. Vòng lặp sau đó ghi lại khóa và giá trị của từng thuộc tính bằng cách sử dụng console.log, liệt kê các thuộc tính của đối tượng một cách hiệu quả.

Một phương pháp khác được chứng minh là sử dụng Object.entries(), trả về một mảng các cặp thuộc tính [khóa, giá trị] có thể đếm được của chính đối tượng. Mảng này sau đó được lặp lại bằng cách sử dụng forEach(), một phương thức mảng tiện lợi thực thi một hàm được cung cấp một lần cho mỗi phần tử mảng. Phương pháp này đơn giản hóa mã bằng cách truy cập trực tiếp vào cả khóa và giá trị trong mỗi lần lặp, làm cho quá trình liệt kê trở nên đơn giản và dễ đọc. Các Object.keys() phương thức hoạt động tương tự nhưng chỉ trả về các khóa, sau đó được sử dụng để truy cập các giá trị tương ứng trong forEach() vòng.

Ngoài ra, Object.values() là một phương thức hữu ích khác trả về một mảng các giá trị của đối tượng. Bằng cách lặp lại mảng này với forEach(), chúng ta có thể truy cập trực tiếp và ghi lại từng giá trị. Những phương pháp này—for...in, Object.entries(), Object.keys(), Và Object.values()—là những công cụ mạnh mẽ để xử lý các đối tượng trong JavaScript. Chúng cung cấp sự linh hoạt trong cách bạn truy cập và thao tác các thuộc tính đối tượng, đáp ứng các nhu cầu và sở thích khác nhau. Mỗi phương pháp đều có những ưu điểm và việc hiểu chúng cho phép các nhà phát triển chọn phương pháp phù hợp nhất cho trường hợp sử dụng cụ thể của họ, đảm bảo việc thực thi mã hiệu quả và hiệu quả.

Lặp lại các thuộc tính của đối tượng bằng vòng lặp for...in

JavaScript - Vòng lặp for...in

var p = {"p1":"value1","p2":"value2","p3":"value3"};
for (var key in p) {
  if (p.hasOwnProperty(key)) {
    console.log(key + " -> " + p[key]);
  }
}
// Output:
// p1 -> value1
// p2 -> value2
// p3 -> value3

Lặp qua các khóa và giá trị đối tượng bằng cách sử dụng Object.entries()

JavaScript - Object.entries()

var p = {"p1":"value1","p2":"value2","p3":"value3"};
Object.entries(p).forEach(([key, value]) => {
  console.log(key + " -> " + value);
});
// Output:
// p1 -> value1
// p2 -> value2
// p3 -> value3

Liệt kê các thuộc tính đối tượng bằng Object.keys()

JavaScript - Object.keys()

var p = {"p1":"value1","p2":"value2","p3":"value3"};
Object.keys(p).forEach(key => {
  console.log(key + " -> " + p[key]);
});
// Output:
// p1 -> value1
// p2 -> value2
// p3 -> value3

Lặp lại các giá trị đối tượng bằng cách sử dụng Object.values()

JavaScript - Object.values()

var p = {"p1":"value1","p2":"value2","p3":"value3"};
Object.values(p).forEach(value => {
  console.log(value);
});
// Output:
// value1
// value2
// value3

Đi sâu hơn vào việc lặp lại đối tượng JavaScript

Một cách mạnh mẽ khác để xử lý việc lặp đối tượng trong JavaScript là thông qua việc sử dụng Map sự vật. Không giống như những đồ vật thông thường, Map các đối tượng cho phép bạn lưu trữ các cặp khóa-giá trị trong đó các khóa có thể thuộc bất kỳ loại dữ liệu nào. Tính linh hoạt này có thể đặc biệt hữu ích trong các tình huống mà bạn cần liên kết các khóa phức tạp, chẳng hạn như đối tượng hoặc hàm, với các giá trị. Bạn có thể dễ dàng lặp lại một Map sử dụng các phương thức tích hợp của nó như Map.prototype.forEach(), Map.prototype.keys(), Và Map.prototype.values(), cung cấp một thứ tự lặp nhất quán và có thể dự đoán được, đó là thứ tự chèn.

Ngoài ra Map, JavaScript cũng cung cấp WeakMap, tương tự nhưng với các khóa được tham chiếu yếu, nghĩa là chúng không ngăn chặn việc thu gom rác nếu không có tham chiếu nào khác đến đối tượng. Điều này có thể giúp quản lý bộ nhớ hiệu quả hơn trong một số ứng dụng nhất định. Cả hai MapWeakMap cung cấp một bộ phương pháp mạnh mẽ để quản lý bộ sưu tập các cặp khóa-giá trị. Mặc dù chúng không phải là sự thay thế trực tiếp cho các đối tượng đơn giản nhưng chúng mang lại những lợi thế độc đáo về tính linh hoạt và quản lý bộ nhớ có thể được tận dụng trong các cấu trúc dữ liệu và thuật toán phức tạp hơn.

Các câu hỏi thường gặp về việc lặp lại đối tượng JavaScript

  1. Làm cách nào tôi có thể lặp lại các thuộc tính của đối tượng trong JavaScript?
  2. Bạn có thể dùng for...in, Object.keys(), Object.values(), hoặc Object.entries() để lặp lại các thuộc tính của một đối tượng.
  3. Sự khác biệt giữa for...inObject.keys()?
  4. for...in lặp lại tất cả các thuộc tính có thể đếm được, bao gồm cả những thuộc tính được kế thừa qua chuỗi nguyên mẫu, trong khi Object.keys() chỉ trả về các thuộc tính có thể đếm được của chính đối tượng.
  5. Làm thế nào Object.entries() công việc?
  6. Object.entries() trả về một mảng các cặp thuộc tính [khóa, giá trị] có thể đếm được của chính đối tượng, có thể được lặp lại bằng một forEach vòng.
  7. Tôi có thể sử dụng không? forEach trực tiếp lên một vật thể?
  8. KHÔNG, forEach là một phương thức của mảng, nhưng bạn có thể sử dụng nó trên các mảng được trả về bởi Object.keys(), Object.values(), hoặc Object.entries().
  9. Là gì MapWeakMap?
  10. Map cho phép các loại khóa bất kỳ và duy trì thứ tự chèn. WeakMap có các khóa được tham chiếu yếu và có thể được thu thập rác.
  11. Làm thế nào để Map.prototype.forEach()Array.prototype.forEach() khác nhau?
  12. Chúng hoạt động tương tự nhau nhưng Map.prototype.forEach() lặp lại các mục Bản đồ (cặp khóa-giá trị), trong khi Array.prototype.forEach() lặp qua các phần tử mảng.
  13. Tại sao sử dụng Object.values()?
  14. Sử dụng Object.values() khi bạn cần lặp lại trực tiếp các giá trị thuộc tính của đối tượng.

Suy nghĩ cuối cùng về việc lặp lại đối tượng JavaScript

Nắm vững việc lặp đối tượng trong JavaScript là điều cần thiết để lập trình hiệu quả. Bằng cách sử dụng các phương pháp như for...in, Object.keys(), Object.values(), Và Object.entries(), các nhà phát triển có thể truy cập và thao tác các thuộc tính đối tượng một cách hiệu quả. Những kỹ thuật này mang lại sự linh hoạt, đảm bảo rằng mã của bạn luôn sạch sẽ, hiệu quả và dễ hiểu. Cho dù bạn đang xử lý các đối tượng đơn giản hay phức tạp, việc biết các phương pháp này sẽ nâng cao kỹ năng mã hóa và tối ưu hóa các ứng dụng JavaScript của bạn.