diff --git a/README.md b/README.md index 024d3013d..3b5c379f8 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ * [Sum of array of numbers](#sum-of-array-of-numbers) * [Swap values of two variables](#swap-values-of-two-variables) * [Unique values of array](#unique-values-of-array) +* [URL parameters](#url-parameters) * [UUID generator](#uuid-generator) ### Anagrams of string (with duplicates) @@ -168,6 +169,17 @@ var uniqueValues = arr => }, []); ``` +### URL parameters + +Use `match()` with an appropriate regular expression to get all key-value pairs, `map()` them appropriately. +Combine all key-value pairs into a single object using `Object.assign()` and the spread operator (`...`). +Pass `location.search` as the argument to apply to the current `url`. + +```js +var getUrlParameters = url => + Object.assign(...url.match(/([^?=&]+)(=([^&]*))?/g).map(m => {[f,v] = m.split('='); return {[f]:v}})); +``` + ### UUID generator Use `crypto` API to generate a UUID, compliant with [RFC4122](https://www.ietf.org/rfc/rfc4122.txt) version 4. diff --git a/snippets/URL-parameters.md b/snippets/URL-parameters.md new file mode 100644 index 000000000..05f523fba --- /dev/null +++ b/snippets/URL-parameters.md @@ -0,0 +1,10 @@ +### URL parameters + +Use `match()` with an appropriate regular expression to get all key-value pairs, `map()` them appropriately. +Combine all key-value pairs into a single object using `Object.assign()` and the spread operator (`...`). +Pass `location.search` as the argument to apply to the current `url`. + +```js +var getUrlParameters = url => + Object.assign(...url.match(/([^?=&]+)(=([^&]*))?/g).map(m => {[f,v] = m.split('='); return {[f]:v}})); +```