Exercise 4: Build Query String
Problem Statement
Function `toQuery(params)` banao jo object ko query string banaye.
Example: {q:"js", page:2} → "q=js&page=2"
Sample Output:
toQuery({q: "js", page: 2}) => "q=js&page=2"
toQuery({q: "js", page: null}) => "q=js"
toQuery({category: "electronics", price: 1000}) => "category=electronics&price=1000"Solution
const toQuery = (params) =>
new URLSearchParams(Object.entries(params).filter(([, v]) => v != null)).toString();Explanation
Overall Goal:
- Object ko URL query string me convert karna.
- Example:
{q: "js", page: 2}→"q=js&page=2".
Single Line Solution:
const toQuery = (params) => new URLSearchParams(Object.entries(params).filter(([, v]) => v != null)).toString();
Part 1: Object entries
Object.entries(params)- Object ko key-value pairs ka array me convert:
{q: "js", page: 2}→[["q", "js"], ["page", 2]].
Part 2: Filter null/undefined
.filter(([, v]) => v != null)[, v]→ destructuring: value extract (key ignore).v != null→nullaurundefineddono filter (loose equality).- Result: sirf valid values wale pairs.
Part 3: URLSearchParams
new URLSearchParams(...)- Browser ka built-in API: query string handle karta hai.
- Array of pairs ko query string me convert.
Part 4: To string
.toString()→ final query string return.
Example:
toQuery({q: "js", page: 2})→"q=js&page=2".toQuery({q: "js", page: null})→"q=js"(null filtered).
Real world:
- Search filters:
?category=electronics&price=1000. - Pagination:
?page=2&limit=10. - API queries: dynamic query parameters.