[英]Use Ramda to change deep nested object value
我有如下數據結構,如何使用 Ramda 將數字類型的quantity
更改為字符串類型(從1
到"1"
)
const data = {
orderInfoList: [
{
orderNo: "string",
productList: [
{
productName: "string",
quantity: 1
}
]
}
]
}
假設您要對每個訂單中的所有產品執行此轉換:
// Utility function const mapOver = R.curry( (lens, Fn, ent) => R.over( lens, R.when(R.is(Array), R.map(Fn)), ent ) ); const transformProductQuantity = R.over( R.lensProp('quantity'), String ); const transformOrderProducts = mapOver( R.lensProp('productList'), transformProductQuantity ); const transformData = mapOver( R.lensProp('orderInfoList'), transformOrderProducts ); const data = { orderInfoList: [ { orderNo: "1", productList: [ { productName: "Foo", quantity: 1 }, { productName: "Bar", quantity: 12 } ] }, { orderNo: "2", productList: [ { productName: "Foo", quantity: 12 }, { productName: "Bar", quantity: 15 } ] }, { orderNo: "3", } ] } const result = transformData(data); console.log(JSON.stringify(result, null, 2));
<script src="//cdn.jsdelivr.net/npm/ramda@0.25.0/dist/ramda.min.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.