0

I have the following code:

const createSpaces = () => {
  return Array(constants.SPACES)
    .fill(null)
    .map((_, index) => ({
      desk: index,
      isDeskAvailable: true,
      timeOccupied: 0,
    }));
};

and a function to update it:

 markDeskAvailable(deskRequested: number) {
      const occupiedDesk = spaces.find(
        (space) => space.desk === deskRequested
      );

      if (!occupiedDesk) {
        throw new Error("Desk does not exist.");
      }

     
      return {
          ...occupiedDesk,
          isDeskAvailable: true,
          timeOccupied: 0
      }
};

This doesn't throw an error, but my spaces array of objects doesn't update when I do:

const office = createSpaces();
carPark.markDeskAvailable(0);
console.log(office.getSpaces()); // Just returns the spaces

What am I doing wrong here? The object should have changed its properties.

roo
  • 343
  • 1
  • 5
  • 17
  • 3
    `markDeskAvailable` returns a new object. Your code just discards it. – VLAZ Jun 30 '22 at 11:04
  • In this case _reassigning_ `occupiedDesk = {...occupiedDesk, isDeskAvailable: true, timeOcccupied: 0}` wouldn't work but _mutating_ the found object _would_: `Object.assign(occupiedDesk, { isDeskAvailable: true, timeOccupied: 0 })`. – RickN Jun 30 '22 at 11:52

0 Answers0