Extend URLSearchParams to object

There must be a reason this is a bad idea or it would be included in the API, right? 😅

URLSearchParams.prototype.toObject = function() {
  return […this.keys()]
    .reduce((o,k) => ({ …o, [k]: this.get(k) }), {});

Sample location.href:



qs = new URLSearchParams(location.search);

Sample output:

  "q": "mdn urlsearchparams to object",
  "oq": "mdn url",
  "aqs": "chrome.2.69i59j69i57j35i39j0i512l2j69i60l3.2756j0j9",
  "sourceid": "chrome",
  "ie": "UTF-8"

Me thinks it would be a better practice to use an external function instead:

const paramsObject = (usp) => [...usp.keys()]
  .reduce((o, k) => ({ ...o, [k]: usp.get(k) }), {});
console.log(paramsObject(new URLSearchParams(location.search)));