class Pipeline {
#value;
#log = [];
constructor(value) {
this.#value = value;
}
map(fn) {
this.#value = fn(this.#value);
this.#log.push(`map:${this.#value}`);
return this;
}
filter(fn) {
if (Array.isArray(this.#value)) {
this.#value = this.#value.filter(fn);
this.#log.push(`filter:${this.#value}`);
}
return this;
}
reduce(fn, init) {
if (Array.isArray(this.#value)) {
this.#value = this.#value.reduce(fn, init);
this.#log.push(`reduce:${this.#value}`);
}
return this;
}
result() {
console.log(this.#log.join(' | '));
return this.#value;
}
}
new Pipeline([1, 2, 3, 4, 5, 6])
.filter(n => n % 2 === 0)
.map(arr => arr.map(n => n ** 2))
.reduce((acc, n) => acc + n, 0)
.result(); Post #3211
2.38K
CHALLENGE
- 👍 5
- ❤ 4
- 🔥 4