You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:18:02