實務上 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
Conclusion
- 若使用 imperative 整個過程將非常複雜,但若使用 FP 只要組合幾個小 function 就能達成需求
Reference
Andy Van Slaars, Convert a QueryString to an Object using Function Composition in Ramda