Tạo vòng lặp đối tượng javascript

Câu lệnh

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 lặp lại trên tất cả các thuộc tính chuỗi có thể đếm được của một đối tượng (bỏ qua các thuộc tính được khóa bởi các ký hiệu), bao gồm các thuộc tính có thể đếm được kế thừa

for (variable in object)
  statement

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
3

Nhận một tên thuộc tính chuỗi trên mỗi lần lặp. Có thể là một khai báo với

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
4,
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
5 hoặc
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
6 hoặc một mục tiêu chuyển nhượng (e. g. một biến được khai báo trước đó hoặc một thuộc tính đối tượng)

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
7

Đối tượng có thuộc tính đếm được không phải là biểu tượng được lặp lại

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
8

Một câu lệnh sẽ được thực hiện trên mỗi lần lặp. Có thể tham khảo

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
3. Bạn có thể sử dụng một câu lệnh khối để thực thi nhiều câu lệnh

Vòng lặp sẽ lặp qua tất cả vô số thuộc tính của chính đối tượng và những thuộc tính mà đối tượng kế thừa từ chuỗi nguyên mẫu của nó (thuộc tính của các nguyên mẫu gần hơn được ưu tiên hơn các thuộc tính của các nguyên mẫu xa đối tượng hơn trong chuỗi nguyên mẫu của nó)

Vòng lặp

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 chỉ lặp qua vô số thuộc tính không phải ký hiệu. Các đối tượng được tạo từ các hàm tạo dựng sẵn như
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 và
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
3 đã kế thừa các thuộc tính không thể đếm được từ
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
4 và
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
5, chẳng hạn như phương thức
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
7 của
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 hoặc phương thức
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
9 của
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
3, sẽ không được truy cập trong vòng lặp
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2

Thứ tự truyền tải, theo đặc tả ECMAScript hiện đại, được xác định rõ ràng và nhất quán trong quá trình triển khai. Trong mỗi thành phần của chuỗi nguyên mẫu, tất cả các khóa số nguyên không âm (những khóa có thể là chỉ số mảng) sẽ được duyệt trước theo thứ tự tăng dần theo giá trị, sau đó là các khóa chuỗi khác theo thứ tự thời gian tăng dần của việc tạo thuộc tính

Phần

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
3 của
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 chấp nhận mọi thứ có thể đến trước toán tử
const triangle = { a: 1, b: 2, c: 3 };

function ColoredTriangle() {
  this.color = "red";
}

ColoredTriangle.prototype = triangle;

const obj = new ColoredTriangle();

for (const prop in obj) {
  if (Object.hasOwn(obj, prop)) {
    console.log(`obj.${prop} = ${obj[prop]}`);
  }
}

// Logs:
// "obj.color = red"
3. Bạn có thể sử dụng
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
4 để khai báo biến miễn là nó không được gán lại trong thân vòng lặp (nó có thể thay đổi giữa các lần lặp, vì đó là hai biến riêng biệt). Nếu không, bạn có thể sử dụng
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
5. Bạn cũng có thể sử dụng hàm hủy hoặc thuộc tính đối tượng như
const triangle = { a: 1, b: 2, c: 3 };

function ColoredTriangle() {
  this.color = "red";
}

ColoredTriangle.prototype = triangle;

const obj = new ColoredTriangle();

for (const prop in obj) {
  if (Object.hasOwn(obj, prop)) {
    console.log(`obj.${prop} = ${obj[prop]}`);
  }
}

// Logs:
// "obj.color = red"
6

A cho phép khai báo

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
6 biến vòng lặp có bộ khởi tạo. Điều này gây ra lỗi cú pháp ở chế độ nghiêm ngặt và bị bỏ qua ở chế độ không nghiêm ngặt

Nếu một thuộc tính được sửa đổi trong một lần lặp và sau đó được truy cập sau đó, giá trị của nó trong vòng lặp là giá trị của nó tại thời điểm sau đó. Thuộc tính bị xóa trước khi nó được truy cập sẽ không được truy cập sau. Các thuộc tính được thêm vào đối tượng mà quá trình lặp đang diễn ra có thể được truy cập hoặc bỏ qua khỏi quá trình lặp

Nói chung, tốt nhất là không thêm, sửa đổi hoặc xóa các thuộc tính khỏi đối tượng trong quá trình lặp lại, ngoài thuộc tính hiện đang được truy cập. Không có gì đảm bảo liệu một thuộc tính được thêm vào sẽ được truy cập hay không, liệu một thuộc tính đã sửa đổi (không phải thuộc tính hiện tại) sẽ được truy cập trước hay sau khi nó được sửa đổi hay liệu một thuộc tính đã xóa sẽ được truy cập trước khi nó bị xóa

Các chỉ mục mảng chỉ là các thuộc tính có thể đếm được với tên số nguyên và giống hệt với các thuộc tính đối tượng chung. Vòng lặp

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 sẽ duyệt qua tất cả các khóa số nguyên trước khi duyệt qua các khóa khác và theo thứ tự tăng dần nghiêm ngặt, làm cho hành vi của
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 gần với phép lặp mảng thông thường. Tuy nhiên, vòng lặp
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 sẽ trả về tất cả các thuộc tính có thể đếm được, bao gồm cả những thuộc tính có tên không phải là số nguyên và những thuộc tính được kế thừa. Không giống như
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
21,
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 sử dụng phép liệt kê thuộc tính thay vì trình vòng lặp của mảng. Trong ,
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
21 sẽ truy cập vào các vị trí trống, nhưng
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 sẽ không

Tốt hơn là sử dụng vòng lặp

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
25 với chỉ mục số,
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
26 hoặc vòng lặp
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
21, vì chúng sẽ trả về chỉ mục dưới dạng số thay vì chuỗi và cũng tránh các thuộc tính không phải chỉ mục

Nếu bạn chỉ muốn xem xét các thuộc tính gắn liền với chính đối tượng chứ không phải nguyên mẫu của nó, bạn có thể sử dụng một trong các kỹ thuật sau

  • const obj = { a: 1, b: 2, c: 3 };
    
    for (const prop in obj) {
      console.log(`obj.${prop} = ${obj[prop]}`);
    }
    
    // Logs:
    // "obj.a = 1"
    // "obj.b = 2"
    // "obj.c = 3"
    
    28
  • const obj = { a: 1, b: 2, c: 3 };
    
    for (const prop in obj) {
      console.log(`obj.${prop} = ${obj[prop]}`);
    }
    
    // Logs:
    // "obj.a = 1"
    // "obj.b = 2"
    // "obj.c = 3"
    
    29

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
30 sẽ trả về một danh sách các thuộc tính chuỗi riêng có thể đếm được, trong khi đó,
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
31 cũng sẽ chứa các thuộc tính không thể đếm được

Nhiều hướng dẫn và trình hướng dẫn về kiểu JavaScript khuyên không nên sử dụng

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2, bởi vì nó lặp lại trên toàn bộ chuỗi nguyên mẫu, điều hiếm khi được người ta muốn và có thể gây nhầm lẫn với vòng lặp
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
21 được sử dụng rộng rãi hơn.
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 được sử dụng thực tế nhất cho mục đích gỡ lỗi, là một cách dễ dàng để kiểm tra các thuộc tính của một đối tượng (bằng cách xuất ra bàn điều khiển hoặc cách khác). Trong trường hợp các đối tượng được sử dụng làm cặp khóa-giá trị đặc biệt,
const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 cho phép bạn kiểm tra xem có bất kỳ khóa nào trong số đó giữ một giá trị cụ thể không

Vòng lặp

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
2 bên dưới lặp qua tất cả các thuộc tính không phải ký hiệu, có thể đếm được của đối tượng và ghi nhật ký một chuỗi tên thuộc tính và giá trị của chúng

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"

Hàm sau minh họa việc sử dụng

const obj = { a: 1, b: 2, c: 3 };

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Logs:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
37. các thuộc tính kế thừa không được hiển thị

Làm cách nào để tạo đối tượng có vòng lặp trong JavaScript?

Các phương thức lặp qua các đối tượng bằng javascript .
vì. trong vòng lặp. Cách đơn giản nhất để lặp qua các thuộc tính của đối tượng là sử dụng lệnh for. trong tuyên bố. .
keys() Phương thức. Trước ES6, cách duy nhất để lặp qua một đối tượng là sử dụng lệnh for. trong vòng lặp. .
phương thức value(). đối tượng. .
các mục () Phương thức

Chúng ta có thể tạo đối tượng trong vòng lặp không?

for(var x = 1; x<=10; x++){ var Object + x = new Object();

Chúng ta có thể lặp đối tượng trong JavaScript không?

đối tượng. keys() đã được giới thiệu trong ES6. Nó lấy đối tượng mà chúng ta muốn lặp lại làm đối số và trả về một mảng chứa tất cả các tên thuộc tính (còn được gọi là khóa)

Đối tượng tạo () trong JavaScript là gì?

Đối tượng. phương thức create() tạo một đối tượng mới, sử dụng một đối tượng hiện có làm nguyên mẫu của đối tượng mới được tạo .