It was a great learning experience, and I've tried to comment the code thoroughly.
https://github.com/jeffallen6767/keccak-p-js/blob/master/src...
Previous to this I did sha256, and I have to say that the Keccak algorithm was a bit easier to reason about ( as to what it was doing at the bit level, and why )...at least it was for me.
https://github.com/jeffallen6767/sha-256-js/blob/master/src/...