60 lines
1.2 KiB
TypeScript
60 lines
1.2 KiB
TypeScript
// es-iterator-helpers/Iterator.prototype.filter
|
|
export function* filter<T>(
|
|
iterable: Iterable<T>,
|
|
predicate: (value: T) => boolean,
|
|
): Iterable<T> {
|
|
for (const value of iterable) {
|
|
if (predicate(value)) {
|
|
yield value;
|
|
}
|
|
}
|
|
}
|
|
|
|
// es-iterator-helpers/Iterator.prototype.forEach
|
|
export function forEach<T>(iterable: Iterable<T>, callback: (value: T) => void) {
|
|
for (const value of iterable) {
|
|
callback(value);
|
|
}
|
|
}
|
|
|
|
// es-iterator-helpers/Iterator.prototype.some
|
|
export function some<T>(
|
|
iterable: Iterable<T>,
|
|
predicate: (value: T) => boolean,
|
|
): boolean {
|
|
for (const value of iterable) {
|
|
if (predicate(value)) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// es-iterator-helpers/Iterator.prototype.find
|
|
export function find<T>(
|
|
iterable: Iterable<T>,
|
|
predicate: (value: T) => boolean,
|
|
): T | undefined {
|
|
for (const value of iterable) {
|
|
if (predicate(value)) {
|
|
return value;
|
|
}
|
|
}
|
|
}
|
|
|
|
// es-iterator-helpers/Iterator.from
|
|
export function from<T>(iterable: Iterable<T>) {
|
|
return iterable;
|
|
}
|
|
|
|
// es-iterator-helpers/Iterator.prototype.map
|
|
export function* map<T, U>(
|
|
iterable: Iterable<T>,
|
|
callback: (value: T) => U,
|
|
): Iterable<U> {
|
|
for (const value of iterable) {
|
|
yield callback(value);
|
|
}
|
|
}
|