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 != nullnull aur undefined dono 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.