如何使用RamdaJS将offerStatus复制到嵌套JSON数组的产品对象中
用RamdaJS实现offerStatus字段批量复制到子产品对象中
需求:将每个offer对象中的offerStatus字段复制到其products数组下的每个product对象内。
实现代码
const { map, evolve, prop, assoc } = require('ramda'); // 定义转换函数 const addOfferStatusToProducts = map(evolve({ products: map(assoc('offerStatus', prop('offerStatus'))) })); // 原始数据 const originalOffers = [ { "offerId": "123", "offerStatus": "ACTIVATED", "products": [{"productId": "1"}] }, { "offerId": "456", "offerStatus": "NOT_ACTIVATED", "products": [{"productId": "2"}, {"productId": "3"}] } ]; // 执行转换 const transformedOffers = addOfferStatusToProducts(originalOffers); console.log(JSON.stringify(transformedOffers, null, 2));
代码说明
map(...):遍历外层的offer数组,对每个offer对象执行后续处理evolve({ products: ... }):仅修改offer对象的products属性,其余属性保持原样map(assoc('offerStatus', prop('offerStatus'))):遍历products数组的每个product对象,通过assoc新增offerStatus字段,字段值由prop('offerStatus')从当前所属的offer对象中获取
内容的提问来源于stack exchange,提问作者Nadhas
相关产品推荐
相关产品推荐

