如何实现基于filters ref生成请求参数对象的复用函数?
过滤参数转换函数的实现方案
通用遍历实现(基础版)
直接遍历filters对象的所有键,提取每个子对象的value值,将空字符串转换为undefined,最终生成目标参数对象:
function buildRequestParams(filters) { const params = {}; for (const key in filters) { const value = filters[key].value; params[key] = value || undefined; } return params; }
使用方式
在需要生成参数的地方直接调用:
// 发送数据时使用 sendData(buildRequestParams(filters.value)); // 另一个函数中复用 anotherFunction(buildRequestParams(filters.value));
简洁版(使用reduce)
如果偏好更简洁的写法,可借助Object.entries和reduce实现:
const buildRequestParams = (filters) => Object.entries(filters).reduce((params, [key, { value }]) => { params[key] = value || undefined; return params; }, {});
扩展版(支持排除特定字段)
如果存在不需要转换的字段,可以新增参数来排除这些键:
function buildRequestParams(filters, excludeKeys = []) { const params = {}; for (const key in filters) { if (excludeKeys.includes(key)) continue; const value = filters[key].value; params[key] = value || undefined; } return params; } // 使用示例:排除不需要处理的"status"字段 buildRequestParams(filters.value, ['status']);
这种实现的优势在于无需手动维护每个字段的转换逻辑,后续filters新增字段时,函数会自动适配,彻底避免重复代码。
内容的提问来源于stack exchange,提问作者stanislav kim
相关产品推荐
相关产品推荐

