點燈坊

失くすものさえない今が強くなるチャンスよ

如何將 Query String 轉成 Object ?

Sam Xiao's Avatar 2020-04-08

實務上 Query String 以 String 形式呈現,該如何快速轉成 Object 方便使用呢 ?

Version

macOS Catalina 10.15.4
VS Code 1.43.2
Quokka 1.0.285
Ramda 0.27.0

Ramda

import { pipe, tail, split, map, fromPairs } from 'ramda'

let data = '?page=2&pageSize=10&total=203'

let f = pipe(
  tail,
  split('&'),
  map(split('=')),
  fromPairs
)

f(data) // ?
  • 使用 tail()? 濾掉
  • 使用 split('&') 將剩餘 string 轉成 array
  • 使用 split('=') 將每個 element 中的 string 轉成 array
  • 使用 fromPairs() 將 array 直接轉成 object

frompair000

Conclusion

  • 若使用 imperative 整個過程將非常複雜,但若使用 FP 只要組合幾個小 function 就能達成需求

Reference

Andy Van Slaars, Convert a QueryString to an Object using Function Composition in Ramda