Phương thức values() trả về một đối tượng lặp mảng mới để lặp lại giá trị của mỗi chỉ mục trong mảng.values() method returns a new array iterator object that iterates the value of each index in the array. Một đối tượng lặp mới có thể lặp lại. Array.prototype.values() là triển khai mặc định của const arr = ["a", "b", "c", "d", "e"];
const iterator = arr.values();
for (const letter of iterator) {
console.log(letter);
} // "a" "b" "c" "d" "e"
0. Array.prototype.values === Array.prototype[Symbol.iterator]; // true
Khi được sử dụng trên các mảng thưa thớt, phương pháp values() lặp lại các khe trống như thể chúng có giá trị const arr = ["a", "b", "c", "d", "e"];
const iterator = arr.values();
for (const letter of iterator) {
console.log(letter);
} // "a" "b" "c" "d" "e"
2. Phương pháp values() là chung chung. Nó chỉ mong đợi giá trị const arr = ["a", "b", "c", "d", "e"];
const iterator = arr.values();
for (const letter of iterator) {
console.log(letter);
} // "a" "b" "c" "d" "e"
4 có thuộc tính const arr = ["a", "b", "c", "d", "e"];
const iterator = arr.values();
for (const letter of iterator) {
console.log(letter);
} // "a" "b" "c" "d" "e"
5 và các thuộc tính được khóa.Thử nó
Cú pháp
Giá trị trả về
Sự mô tả
Ví dụ
Lặp lại sử dụng cho ... của vòng lặp
Bởi vì values() trả về một trình lặp có thể lặp lại, bạn có thể sử dụng vòng lặp const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); for (const letter of iterator) { console.log(letter); } // "a" "b" "c" "d" "e" 7 để lặp lại nó.
const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); for (const letter of iterator) { console.log(letter); } // "a" "b" "c" "d" "e"
Lặp lại sử dụng NEXT ()
Vì giá trị trả về cũng là một trình lặp, bạn có thể gọi trực tiếp phương thức const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); for (const letter of iterator) { console.log(letter); } // "a" "b" "c" "d" "e" 8 của nó.
const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); iterator.next(); // { value: "a", done: false } iterator.next(); // { value: "b", done: false } iterator.next(); // { value: "c", done: false } iterator.next(); // { value: "d", done: false } iterator.next(); // { value: "e", done: false } iterator.next(); // { value: undefined, done: true } console.log(iterator.next().value); // undefined
Tái sử dụng điều đó
CẢNH BÁO: Đối tượng tererator mảng phải là đối tượng sử dụng một lần. Không sử dụng lại nó. The array iterator object should be a one-time use object. Do not reuse it.
Các điều đó được trả lại từ values() không thể tái sử dụng. Khi const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); iterator.next(); // { value: "a", done: false } iterator.next(); // { value: "b", done: false } iterator.next(); // { value: "c", done: false } iterator.next(); // { value: "d", done: false } iterator.next(); // { value: "e", done: false } iterator.next(); // { value: undefined, done: true } console.log(iterator.next().value); // undefined 0 hoặc const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); iterator.next(); // { value: "a", done: false } iterator.next(); // { value: "b", done: false } iterator.next(); // { value: "c", done: false } iterator.next(); // { value: "d", done: false } iterator.next(); // { value: "e", done: false } iterator.next(); // { value: undefined, done: true } console.log(iterator.next().value); // undefined 1, vòng lặp const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); for (const letter of iterator) { console.log(letter); } // "a" "b" "c" "d" "e" 7 kết thúc và lặp đi lặp lại nó không có tác dụng.
const arr = ["a", "b", "c", "d", "e"]; const values = arr.values(); for (const letter of values) { console.log(letter); } // "a" "b" "c" "d" "e" for (const letter of values) { console.log(letter); } // undefined
Nếu bạn sử dụng câu lệnh const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); iterator.next(); // { value: "a", done: false } iterator.next(); // { value: "b", done: false } iterator.next(); // { value: "c", done: false } iterator.next(); // { value: "d", done: false } iterator.next(); // { value: "e", done: false } iterator.next(); // { value: undefined, done: true } console.log(iterator.next().value); // undefined 3 để kết thúc lần lặp sớm, trình lặp có thể tiếp tục từ vị trí hiện tại khi tiếp tục lặp lại nó.
const arr = ["a", "b", "c", "d", "e"]; const values = arr.values(); for (const letter of values) { console.log(letter); if (letter === "b") { break; } } // "a" "b" for (const letter of values) { console.log(letter); } // "c" "d" "e"
Đột biến trong quá trình lặp
Không có giá trị được lưu trữ trong đối tượng tererator mảng được trả về từ values(); Thay vào đó, nó lưu trữ địa chỉ của mảng được sử dụng trong sáng tạo của nó và đọc chỉ mục hiện đã truy cập trên mỗi lần lặp. Do đó, đầu ra lặp của nó phụ thuộc vào giá trị được lưu trữ trong chỉ số đó tại thời điểm bước. Nếu các giá trị trong mảng thay đổi, các giá trị của đối tượng iterator cũng cũng thay đổi.
const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); console.log(iterator); // Array Iterator { } console.log(iterator.next().value); // "a" arr[1] = "n"; console.log(iterator.next().value); // "n"
Lặp lại mảng thưa thớt
values() sẽ truy cập các khe trống như thể chúng là const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); for (const letter of iterator) { console.log(letter); } // "a" "b" "c" "d" "e" 2.
for (const element of [, "a"].values()) { console.log(element); } // undefined // 'a'
Gọi giá trị () trên các đối tượng không phải là
Phương thức values() đọc thuộc tính const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); for (const letter of iterator) { console.log(letter); } // "a" "b" "c" "d" "e" 5 của const arr = ["a", "b", "c", "d", "e"]; const iterator = arr.values(); for (const letter of iterator) { console.log(letter); } // "a" "b" "c" "d" "e" 4 và sau đó truy cập vào từng chỉ mục số nguyên.
const arrayLike = { length: 3, 0: "a", 1: "b", 2: "c", }; for (const entry of Array.prototype.values.call(arrayLike)) { console.log(entry); } // a // b // c
Thông số kỹ thuật
Thông số kỹ thuật ngôn ngữ Ecmascript # sec-array.prototype.values # sec-array.prototype.values |
Tính tương thích của trình duyệt web
Bảng BCD chỉ tải trong trình duyệt