delete(key) {

        // first, ensure the key is valid
        assertNonEmptyString(key);

        /*
         * Next, calculate the hash code from the string key. The hash code
         * is then used to determine the index into the array where the data
         * should be stored.
         */
        const hashCode = hashCodePoints(key);
        const index = getArrayIndexFromHashCode(hashCode);

        /*
         * Special case: If the calculated index in the array hasn't yet
         * been initialized, then the key doesn't exist. Return
         * `false` to indicate the key doesn't exist.
         */
        if (this[array][index] === undefined) {
            return false;
        }

        /*
         * If we've made it to here, then there is a linked list in the
         * array at this location, so try to find the key that matches.
         */
        const resultIndex = this[array][index].findIndex((value) => {
            return value.key === key;
        });

        /*
         * Special case: If `resultIndex` is -1, meaning the value wasn't
         * found, just return -1.
         */
        if (resultIndex === -1) {
            return -1;
        }

        /*
         * If we've made it to here, then `resultIndex` is greater than -1
         * and we need to remove the given key from the hash map.
         */
        this[array][index].remove(resultIndex);

        /*
         * Because we actually performed the removal, we need to return `true`
         * to give feedback that this happened.
         */
        return true;

    }
Deletes the given key from the hash map.
@param {string} key The key to delete.
@returns {boolean} True if the key exists and was deleted, false if the
     key didn't exist.
@throws {TypeError} If the key isn't a non-empty string.