如何将Ramda归一化的对象还原为POST请求所需的原始格式?
解决方案
核心逻辑是将归一化对象拆分为Visits属性和其余属性两部分,分别映射到请求体对应的字段即可:
原生JS实现
const unformatConfig = (normalizedConfig = {}) => { // 解构拆分Visits和其他任务配置 const { Visits = {}, ...tasksConfigMap } = normalizedConfig; return { appointmentsConfig: Visits, // 其余配置的属性值直接转为数组即可 tasksConfigs: Object.values(tasksConfigMap) }; };
Ramda实现
适配你之前使用Ramda的习惯,可以用更函数式的写法:
import { applySpec, propOr, dissoc, values, defaultTo, pipe } from 'ramda'; const unformatConfig = applySpec({ // 取Visits属性作为预约配置,无值时默认空对象 appointmentsConfig: propOr({}, 'Visits'), // 移除Visits属性后,提取所有属性值作为任务配置数组,无值时默认空数组 tasksConfigs: pipe(dissoc('Visits'), values, defaultTo([])) });
逻辑说明
你之前用indexBy将原始任务数组转为以taskTypeGroupAlias为键的对象,还原时直接提取非Visits属性的所有值,就能得到原始的tasksConfigs数组结构,不需要额外修改属性。
内容的提问来源于stack exchange,提问作者shabspb
相关产品推荐
相关产品推荐

