2016-10-13 24 views
6

Tôi đang đọc cuốn sách "JavaScript cho nhà thiết kế web" và tôi đã đến ví dụ này:Đối với .. trong vòng lặp - tại sao nó hoạt động?

var fullName = { 
    "first": "John", 
    "last": "Smith" 
}; 
for (var name in fullName) { 
    console.log(name + ": " + fullName[name]); 
} 

Đầu ra là:

"first: John" 
"last: Smith" 

Những gì tôi không nhận được là: nơi làm Tôi bảo chương trình lấy chuỗi "đầu tiên" và "cuối cùng". Tôi có nghĩa là, đi xe đạp đối tượng "fullName", tôi không thấy làm thế nào "tên" có thể liên quan đến "đầu tiên" và "cuối cùng". Tôi hy vọng điều này là rõ ràng. Bạn có thể trợ giúp không? Cảm ơn nhiều!

+1

'cái lặp loop for' trên các phím của đối tượng của bạn (mà được lưu trữ trong thư mục 'name') và sau đó bạn truy cập vào các giá trị tương ứng như bình thường ('fullName [name]') – UnholySheep

+0

Nó sẽ rõ ràng hơn khi bạn đổi tên biến 'name' thành một cái gì đó khác như' objectProperty' hoặc 'arrayKey' –

Trả lời

12

for..in lặp lại các phím của một đối tượng. Sau đó, bạn có thể truy cập một giá trị đối tượng by name using brackets.

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

 
for (var key in obj) { 
 
    console.log('Key:', key); 
 
    console.log('obj[key] == obj["' + key + '"] == obj.' + key); 
 
    console.log('obj.' + key + ' == ' + obj[key]); 
 
}

6

Thật dễ dàng để tìm hiểu và/hoặc hiểu. Bạn đang lặp qua tất cả các thuộc tính trong đối tượng fullName. Đối với mỗi thuộc tính, bạn đang đem lại cho nó cái tên tạm thời/bí danh của name

Vì vậy, bạn có thể thay đổi nó để for (var anything in fullName) và sau đó trong cơ thể của vòng lặp for bạn sẽ tham khảo mỗi tài sản bằng tên anything như vậy:

for (var anything in fullName) { 

    // anything is an alias for the current property your on of the object you're looping through 
    console.log(anything + ": " + fullName[anything]); 

} 
3

Một vòng lặp for..in sẽ lặp thông qua phím của đối tượng. Nếu bạn sử dụng điều này trên một mảng, sau đó nó (hầu hết các công cụ trình duyệt) sẽ chuyển đổi mảng thành một đối tượng đằng sau hậu trường (đọc thêm về Chế độ Từ điển) và lặp lại các phím.

Bạn có thể xem các phím bằng cách sử dụng

var fullName = { 
 
    "first": "John", 
 
    "last": "Smith" 
 
}; 
 
console.log(Object.keys(fullName));

Và về cơ bản là kết quả của cuộc gọi này là sau đó lặp. Hãy nhớ rằng việc sử dụng for..in không đảm bảo thứ tự của các cặp giá trị khóa.

3

trong đoạn code trên name đại diện chủ chốt của đối tượng,

đầu tiên và cuối cùng là cả hai phím trong đối tượng. và có thể được sử dụng để truy cập vào giá trị trong đối tượng.

như trong thời gian đầu tiên của vòng lặp nó sẽ là một cái gì đó như thế này

for("first" in fullName) { 
console.log("first" + ": " + fullName["first"] //John); 
} 
Các vấn đề liên quan