How to create a request via iteration in Javascript

Viewed 50

I am building a request that has multiple methods attached to it. I'd like to simplify the code by iterating over an enum and building the request, but when I try this I end up with a different result than expected.

The before code looks like this:

export const makeShelterRequest = (area: string) => {

const request = new Request().setArea(area);
request
  .getDogs()
  .set(
    StatusType.Adopted,
    setAnimalFilter1(),
  )
  .set(
    StatusType.Lost,
    setAnimalFilter2(),

  )
  .set(
    StatusType.Appointment,
    setAnimalFilter3(),

  )
  .set(
    StatusType.Processing,
    setAnimalFilter4(),
  ));

  return request;
};

I'm attempting to iterate instead like so:

  const request = new Request().setArea(area);
  const requestCounts = request.getDogsCount()
  const ENUM_OBJECT_KEYS = Object.keys(ENUM_OBJECT)

  ENUM_OBJECT_KEYS.forEach((key) => {
    requestCounts.set(
      key,
      ENUM_OBJECT[key as StatusType]))
    })
   return requestCounts

Where my ENUM_OBJECT looks like this:

 export const ENUM_OBJECT: Partial<
  Record<StatusType, MyFilterTypes>
> = {
  [StatusType.Adopted]: setAnimalFilter1(),
  [StatusType.Lost]: setAnimalFilter2(),
  [StatusType.Appointment]: setAnimalFilter3(),
  [StatusType.Processing]: setAnimalFilter4(),
};

The first returns an actual request, the second returns a Map. I'm not sure with the ForEach how to return a request after iteration. Any clues what I'm doing wrong here?

1 Answers

Well, turns out the solution was dumb:

In my attempted iteration I returned return requestCounts. Changing it to return request worked.

Related