實務上很多資訊都來自於 String,但 API 要求的 Body 卻是 Object,所以由 String 轉成 Object 需求常常遇到,這該如何實現呢 ?
Version
Ramda 0.27.1
Data
'831669-Jacky-07-14.jpg'
String 包含 id
、name
與 birthday
三項資訊。
{
"id": "831619",
"name": "Jacky"
}
但 API 僅需 Object 有 id
與 name
。
zipObj()
import { pipe, split, take, zipObj } from 'ramda'
let data = '831669-Jacky-07-14.jpg'
pipe(
split('-'),
take(2),
zipObj(['id', 'name'])
)(data) // ?
使用 pipe()
組合 IIFE:
- **split()**:將 String 依
-
拆分成 Array - **take()**:由於 Object 只需
id
與name
,因此只需取前兩筆即可 - **zipObj()**:將兩 Array 合併成 Object,第一個 argument 為 key Array
Conclusion
- 由 String 組合成 Object 看似很難,但只要能先組成 Array,可用的 function 就很多,最後再透過
zipObj()
將兩 Array 組合成 Object