location.hash を解析して object にして返す
正規表現を使うのは大げさな気がする。
location.hash を location.search に書き換えて URL.searchParams で取得するほうが簡単だろうか?
[, 変数名, 大括弧, 変数値]に分割しながら解析する
function parseParms (str = '') { let reg = /(?:^#)?(\D\w*)(\[\])?=(.*?)(?:\&|\;|$)/g, pieces = new Map; while (piece = reg.exec (str)) { let [, key, isAry, val] = piece; key = decodeURIComponent (key); val = decodeURIComponent (val); if (isAry) val = [val]; if (pieces.has (key)) pieces.set (key, [].concat (pieces.get (key), val)); else pieces.set (key, val); } return Object.fromEntries (pieces); }