Vòng lặp lặp lại, lặp lại có thể lặp lại và for..of trong ECMAScript 2015 / ES6
let tempArray = [1,2,3,4,5];
for(element of tempArray) {
console.log(element);
}
Nhưng nếu chúng ta làm
let tempObj = {a:1, b:2, c:3};
for(element of tempObj) {
console.log(element);
}
Chúng tôi gặp lỗi vì vòng lặp for..of chỉ hoạt động trên Iterables , tức là đối tượng có trình lặp @@ tuân theo giao thức Iterator , nghĩa là nó phải có một đối tượng có phương thức tiếp theo . Phương thức tiếp theo không có đối số và nó sẽ trả về một đối tượng có hai thuộc tính này.
thực hiện : tín hiệu rằng chuỗi đã kết thúc khi sự thật, và các phương tiện sai có thể có nhiều giá trị
giá trị : đây là mục hiện hành trong chuỗi
Vì vậy, để làm cho một đối tượng Iterable đó là để làm cho nó làm việc với for..of chúng ta có thể:
1. Biến một đối tượng trở thành Lặp lại bằng cách gán cho thuộc tính vòng lặp @@ huyền bí của nó thông qua thuộc tính Symbol.iterator. Dưới đây là cách thực hiện:
let tempObj = {a:1, b:2, c:3};
tempObj[Symbol.iterator]= () => ({
next: function next () {
return {
done: Object.keys(this).length === 0,
value: Object.keys(this).shift()
}
}
})
for(key in tempObj){
console.log(key)
}
2.Sử dụng Object.entries , trả về một lặp lại :
let tempObj = {a:1, b:2, c:3};
for(let [key, value] of Object.entries(tempObj)) {
console.log(key, value);
}
3. Sử dụng Object.keys , đây là cách thực hiện:
let tempObj = {a:1, b:2, c:3};
for (let key of Object.keys(tempObj)) {
console.log(key);
}
Hi vọng điêu nay co ich!!!!!!