TaskWrite function* parseCsv(text) yielding parsed rows as objects (headers from first line). Given const csv = 'name,age\nAnna,30\nBob,25\nClara,40', use for-of to sum the age column (parse as int). Log the sum.
Capstone: streaming CSV parser
275 XP15 min
Theory
Putting C6 together
A streaming CSV parser is the perfect generator capstone β it walks a string line by line, yielding one parsed row at a time. No need to materialize the whole table in memory.
The shape:
function* parseCsv(text) {
const lines = text.trim().split("\n");
const headers = lines[0].split(",");
for (let i = 1; i < lines.length; i++) {
const values = lines[i].split(",");
const row = {};
for (let j = 0; j < headers.length; j++) {
row[headers[j]] = values[j];
}
yield row;
}
}You consume it with for-of. The capstone task takes a hard-coded CSV string, parses it, and sums a numeric column.
Why this matters
- The same generator shape works on
ReadableStreamchunks fromfetchβ turns a 100MB CSV download into a row-by-row stream. - Async generators handle the streaming version (real fetch + TextDecoderStream).
- You only need C6-04 + C6-09 to do it. Generators are not theoretical.
π
Sign up to start coding
Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β card required, cancel anytime.
Sign up β free trial βFirst 10 lessons in each track are free. No card needed for those.