Method chaining creates readable, declarative code. Each method returns this to allow chaining.
// dirty — verbose, repetitive assignment
function solve(items) {
let result = items;
result = result.filter(x => x > 0);
result = result.map(x => x * 2);
result = result.slice(0, 3);
return result;
}Implement `createPipeline(items)` that returns a fluent builder with filter(fn), map(fn), take(n) and value() methods — all chainable.
createPipeline([1,-2,3,4,5]).filter(x=>x>0).map(x=>x*2).take(2).value() → [2, 6]
Sample tests