Premetto che in js sono una pippa ma ci provo ugualmente.
Se book è un oggetto forse il problema è che nella funzione compareBy() accedi alle proprietà come se fosse un array.

Prova ad usare a.key e b.key