如何在Javascript中通过迭代生成符合要求的Request请求对象
问题原因
- 方法调用错误:原实现中你调用的是
request.getDogs()获取犬只请求配置实例,而修改后的代码错误调用了request.getDogsCount(),这个方法返回的就是你提到的Map类型,和你需要操作的请求配置对象不是同一个实例。 - 返回值错误:原实现最终返回的是最外层的
request请求实例,而你修改后的代码返回了getDogsCount()得到的中间Map对象,自然不符合预期。
修复后的实现
export const makeShelterRequest = (area: string) => { const request = new Request().setArea(area); // 获取和原逻辑一致的犬只请求配置实例 const dogRequest = request.getDogs(); // 遍历枚举批量设置过滤器 Object.keys(ENUM_OBJECT).forEach((key) => { dogRequest.set( key as StatusType, ENUM_OBJECT[key as StatusType] ); }); // 返回根请求实例,和原逻辑返回值保持一致 return request; };
可选优化
如果你的set方法是标准的链式调用设计(调用后返回当前实例本身),也可以用reduce实现更贴近原链式调用风格的写法:
export const makeShelterRequest = (area: string) => { const request = new Request().setArea(area); Object.keys(ENUM_OBJECT).reduce( (dogRequest, key) => dogRequest.set(key as StatusType, ENUM_OBJECT[key as StatusType]), request.getDogs() ); return request; };
内容的提问来源于stack exchange,提问作者stonerose036
相关产品推荐
相关产品推荐

