Bạn sử dụng câu lệnh nào để lặp qua các thuộc tính của đối tượng và các items của mảng?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
2.170 lượt xem
Javascript junior

Đối với các đối tượng:

  • for - for (var property in obj) { console.log(property); }. Tuy nhiên, điều này cũng sẽ lặp lại qua các thuộc tính kế thừa của nó và bạn sẽ thêm một lệnh kiểm tra obj.hasOwnProperty(property) trước khi sử dụng nó.
  • Object.keys() - Object.keys(obj).forEach(function (property) { ... }). Object.keys() là một phương thức tĩnh sẽ liệt kê tất cả các thuộc tính có thể liệt kê của đối tượng mà bạn truyền nó vào.
  • Object.getOwnPropertyNames() - Object.getOwnPropertyNames(obj).forEach(function (property) { ... }). Object.getOwnPropertyNames() là một phương thức tĩnh sẽ liệt kê tất cả các thuộc tính có thể liệt kê và không thể liệt kê của đối tượng mà bạn truyền nó.

Đối với mảng:

  • for - for (var i = 0; i < arr.length; i++). Cạm bẫy phổ biến ở đây là var nằm trong phạm vi hàm chứ không phải phạm vi khối và hầu hết bạn muốn biến i thuộc phạm vi khối. ES2015 giới thiệu let có phạm vi khối và bạn nên sử dụng nó để thay thế. Vì vậy, điều này trở thành: for (let i = 0; i <arr.length; i ++).
  • forEach - arr.forEach (function (el, index) {...}). Cấu trúc này đôi khi có thể thuận tiện hơn vì bạn không phải sử dụng index nếu tất cả những gì bạn cần là các phần tử mảng. Ngoài ra còn có các phương thức everysome sẽ cho phép bạn kết thúc sớm quá trình lặp.

Hầu hết thời gian, tôi thích phương thức .forEach hơn, nhưng nó thực sự phụ thuộc vào những gì bạn đang thực hiện.

Vòng lặp for cho phép linh hoạt hơn, chẳng hạn như kết thúc sớm vòng lặp bằng cách sử dụng break hoặc tăng vòng lặp nhiều hơn.

{{login.error}}