实现一个函数 parseQueryString(str),将查询字符串解析为对象

推荐答案

-- -------------------- ---- -------
-------- --------------------- -
    -- ------ ------ ---

    ------ --------------------------- ----- -- -
        ----- ----- ------ - ----------------
        -- ----- -
            ---------------------------- - ----- - ------------------------- - -----
        -
        ------ ----
    -- ----
-

本题详细解读

题目要求

实现一个函数 parseQueryString(str),将查询字符串解析为对象。例如,输入 "name=John&age=30",输出 { name: "John", age: "30" }

解题思路

  1. 字符串分割:首先,使用 split('&') 将查询字符串按 & 分割成多个键值对。
  2. 键值对处理:对每个键值对,使用 split('=') 将其分割为键和值。
  3. 解码:使用 decodeURIComponent 对键和值进行解码,以处理 URL 编码的字符。
  4. 构建对象:将解码后的键值对存储到一个对象中,并返回该对象。

代码解析

  • if (!str) return {};:如果输入字符串为空,直接返回一个空对象。
  • str.split('&'):将查询字符串按 & 分割成数组。
  • reduce:遍历数组中的每个键值对,将其解析并存储到累加器对象 acc 中。
  • decodeURIComponent:对键和值进行解码,确保 URL 编码的字符被正确解析。
  • acc[decodeURIComponent(key)] = value ? decodeURIComponent(value) : null;:将解码后的键值对存储到对象中,如果值为空,则存储为 null

示例

纠错
反馈