NodeJS Program to ObjectMode Filter Stream with Explanation
NodeJS
Hard
Streams & Buffers
21 views
1 min read
80 words
This problem helps you practice core NodeJS fundamentals in a practical way. It builds intuition around filter, stream, jsonl. Let’s break it down step by step so you can implement it confidently.
Problem Statement
Filter objects in a stream (only keep level=hard) and output JSONL.
Input Format
No input.
Output Format
Print JSONL.
Constraints
Use Transform with readableObjectMode.
Code Solution
This explanation is written for learning purposes and to help beginners understand the concept clearly.
const { Readable, Transform } = require('stream');
const src = Readable.from([
{ site: 'meetcode', level: 'easy' },
{ site: 'meetcode', level: 'hard' },
{ site: 'meetcode', level: 'hard' }
], { objectMode: true });
const filter = new Transform({
readableObjectMode: false,
writableObjectMode: true,
transform(obj, enc, cb) {
if (obj.level === 'hard') cb(null, JSON.stringify(obj) + '\
');
else cb();
}
});
src.pipe(filter).pipe(process.stdout);
Output Example
No sample I/O is provided for this question.
Common Mistakes
- Misreading input/output format.
- Not handling constraints and edge cases.
- Off-by-one errors in loops.
- Forgetting to reset variables between test cases (if any).
Solution Guide
Problem
Filter objects in a stream (only keep level=hard) and output JSONL.
Input / Output
Constraints
Use Transform with readableObjectMode.
Details
Common Mistakes
- Misreading input/output format.
- Not handling constraints and edge cases.
- Off-by-one errors in loops.
- Forgetting to reset variables between test cases (if any).
Official Solution
const { Readable, Transform } = require('stream');
const src = Readable.from([
{ site: 'meetcode', level: 'easy' },
{ site: 'meetcode', level: 'hard' },
{ site: 'meetcode', level: 'hard' }
], { objectMode: true });
const filter = new Transform({
readableObjectMode: false,
writableObjectMode: true,
transform(obj, enc, cb) {
if (obj.level === 'hard') cb(null, JSON.stringify(obj) + '\
');
else cb();
}
});
src.pipe(filter).pipe(process.stdout);
Solutions (0)
No solutions submitted yet. Be the first!