| # | title | topic | type | difficulty |
|---|---|---|---|---|
| 1 | Group transactions by risk bucket | Objects | Coding | Hard |
| 2 | What Object.groupBy actually returns | Objects | Multiple choice | Hard |
| 3 | Rebuild Object.groupBy — null prototype included | Objects | Coding | Hard |
| 4 | deepEqual that survives circular references | Objects | Coding | Hard |
| 5 | Group transactions — approach 2: reduce(), no Object.groupBy |
| Objects |
| Coding |
| Hard |
| 6 | Count an object's keys | Objects | Coding | Easy |
| 7 | Merge in defaults with spread | Objects | Coding | Easy |
| 8 | Drag the property lookup into order | Objects | Drag & drop | Medium |
| 9 | Drag the output into order: references vs copies | Objects | Drag & drop | Medium |