Split an array into fixed-size sub-arrays. The final chunk holds the remainder when the length isn't a clean multiple.
Delay invoking a function until a quiet period has passed since the last call. Great for input handlers and resize listeners.
Recursively copy plain objects and arrays so nested mutations don't leak back to the source.
Recursively collapse a nested array into a single flat array. A deep version of Array.prototype.flat with explicit typing.
Bucket an array of objects into a record keyed by one of their fields. The functional alternative to a manual reduce.
Cache a function's return value by its arguments so identical calls are skipped. Best for pure, deterministic functions.
Cap how often a function can run by enforcing a minimum interval between invocations. Great for scroll and mousemove handlers.