Iterator.prototype.some()
Baseline
2025
Newly available
Since March 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Phương thức some() của các thực thể Iterator tương tự như Array.prototype.some(): nó trả về true nếu tìm thấy một phần tử thỏa mãn hàm kiểm tra đã cho. Ngược lại, nếu iterator đã cạn kiệt mà không tìm thấy phần tử như vậy, nó trả về false.
Cú pháp
some(callbackFn)
Tham số
callbackFn-
Hàm thực thi cho mỗi phần tử do iterator tạo ra. Nó nên trả về giá trị truthy để chỉ ra rằng phần tử đã vượt qua bài kiểm tra, và giá trị falsy nếu không. Hàm được gọi với các đối số sau:
Giá trị trả về
true nếu hàm callback trả về giá trị truthy cho ít nhất một phần tử. Ngược lại, false.
Mô tả
some() lặp qua iterator và gọi hàm callbackFn một lần cho mỗi phần tử. Nó trả về true ngay lập tức nếu hàm callback trả về giá trị truthy. Ngược lại, nó lặp đến cuối iterator và trả về false. Nếu some() trả về true, iterator nền được đóng bằng cách gọi phương thức return() của nó.
Ưu điểm chính của các iterator helper so với các phương thức mảng là chúng lười biếng, nghĩa là chúng chỉ tạo ra giá trị tiếp theo khi được yêu cầu. Điều này tránh được tính toán không cần thiết và cũng cho phép chúng được sử dụng với các iterator vô hạn. Với các iterator vô hạn, some() trả về true ngay khi tìm thấy giá trị truthy đầu tiên. Nếu callbackFn luôn trả về giá trị falsy, phương thức không bao giờ trả về.
Ví dụ
>Sử dụng some()
function* fibonacci() {
let current = 1;
let next = 1;
while (true) {
yield current;
[current, next] = [next, current + next];
}
}
const isEven = (x) => x % 2 === 0;
console.log(fibonacci().some(isEven)); // true
const isNegative = (x) => x < 0;
console.log(fibonacci().take(10).some(isNegative)); // false
console.log(fibonacci().some(isNegative)); // Không bao giờ hoàn thành
Gọi some() luôn đóng iterator nền, ngay cả khi phương thức trả về sớm. Iterator không bao giờ bị để lại ở trạng thái nửa chừng.
const seq = fibonacci();
console.log(seq.some(isEven)); // true
console.log(seq.next()); // { value: undefined, done: true }
Đặc điểm kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-iterator.prototype.some> |