From 93c0c9ffd7c4a4f6d37e57caba469a8997d4fc95 Mon Sep 17 00:00:00 2001 From: romikmk Date: Tue, 20 Oct 2020 22:55:32 +0530 Subject: [PATCH 1/2] add query string to object function --- snippets/queryStringToObject.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 snippets/queryStringToObject.md diff --git a/snippets/queryStringToObject.md b/snippets/queryStringToObject.md new file mode 100644 index 000000000..31e563c24 --- /dev/null +++ b/snippets/queryStringToObject.md @@ -0,0 +1,30 @@ +--- +title: queryStringToObject +tags: object,intermediate +--- + +Returns a key-value pairs of object of query params of given url. + +- Use `String.prototype.split()` to split url . +- Return the object of key value pair of query params of given url. + +```js + +function queryStringToObject(url){ + var query = url.split('?'); + if(query[1]){ + var queryParams = {}; + var val = ''; + query = query[1].split('&'); + query.forEach((e) => { + val = e.split('='); + queryParams[val[0]] = val[1]; + }) + return queryParams; + } else { return {}; } +} +``` + +```js +queryStringToObject('https://google.com?page=1&count=10'); // {page: "1", count: "10"} +``` From b6cb73631965a40865447bb12943493cf62aee7d Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Tue, 27 Oct 2020 16:35:18 +0200 Subject: [PATCH 2/2] Update queryStringToObject.md --- snippets/queryStringToObject.md | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/snippets/queryStringToObject.md b/snippets/queryStringToObject.md index 31e563c24..d4b52ce72 100644 --- a/snippets/queryStringToObject.md +++ b/snippets/queryStringToObject.md @@ -3,28 +3,20 @@ title: queryStringToObject tags: object,intermediate --- -Returns a key-value pairs of object of query params of given url. +Generates an object from the given query string or URL. -- Use `String.prototype.split()` to split url . -- Return the object of key value pair of query params of given url. +- Use `String.prototype.split()` to get the params from the given `url`. +- Use `new URLSearchParams()` to create an appropriate object and convert it to an array of key-value pairs using the spread operator (`...`). +- Use `Array.prototype.reduce()` to convert the array of key-value pairs into an object. ```js - -function queryStringToObject(url){ - var query = url.split('?'); - if(query[1]){ - var queryParams = {}; - var val = ''; - query = query[1].split('&'); - query.forEach((e) => { - val = e.split('='); - queryParams[val[0]] = val[1]; - }) - return queryParams; - } else { return {}; } -} +const queryStringToObject = url => + [...new URLSearchParams(url.split('?')[1])].reduce( + (a, [k, v]) => ((a[k] = v), a), + {} + ); ``` ```js -queryStringToObject('https://google.com?page=1&count=10'); // {page: "1", count: "10"} +queryStringToObject('https://google.com?page=1&count=10'); // {page: '1', count: '10'} ```