// This is a simple, *insecure* 32-bit hash that's short, fast, and has no dependencies. // For algorithmic use cases, such as bucketing in hashtables, where security isn't needed // and 32 bits is enough (that is, rare collisions are acceptable). // It's way simpler than sha1 (and all its deps) or similar, and with a short, clean // (base 36 alphanumeric) result. Loosely based on the Java version; see // https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript const simpleHash = str => { let hash = 0; for (let i = 0; i < str.length; i++) { const char = str.charCodeAt(i); hash = (hash << 5) - hash + char; hash &= hash; // Convert to 32bit integer } return new Uint32Array([hash])[0].toString(36); };