Convert URL parameters to object
Read a query string into an object; repeated keys become arrays.
function getUrlParams(query) { return Array.from(new URLSearchParams(query)).reduce((params, [key, value]) => Object.assign(params, { [key]: Object.hasOwn(params, key) ? [].concat(params[key], value) : value }), {}); }
Input & expected output
Input
"?utm_source=1loc.dev&tag=email&tag=webhooks"Expected output
{
"utm_source": "1loc.dev",
"tag": [
"email",
"webhooks"
]
}The edge case
Input
""Expected output
{}Know the limits
- Values are strings; + decodes to a space as in HTML forms.
- The original checked p[k] for truthiness, so an empty first value was overwritten; Object.hasOwn keeps it.
The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.
Source & maintenance
Based on Convert URL parameters to object from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.
Uses Object.hasOwn so an empty first value is kept when a key repeats; the original tested truthiness. Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Convert Celsius to Fahrenheit — Apply the temperature conversion without rounding the result.
- Convert hex to RGB — Expand #rgb if needed and read the red, green and blue channels.
- Convert 3 digits color to 6 digits color — Double each digit of a #rgb color.